Отправьте по электронной почте файл журнала, созданный в конце Программы, используя Serilog - PullRequest
1 голос
/ 20 апреля 2020

Я использую библиотеку Serilog в консольном приложении C# для создания планировщика, который записывает сообщения в файл журнала на каждый день. Имена файлов создаются динамически с использованием приведенного ниже кода.

Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("logs\\log-scheduler-.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();

Как узнать имя файла, созданного моим консольным приложением? В конце моей программы я хочу отправить файл журнала по электронной почте в виде вложения.

1 Ответ

2 голосов
/ 20 апреля 2020

Serilog не предоставляет способ проверить имя файла (ов), которые были созданы, на момент написания этой статьи.

Если вы не используете RollingInterval и у вас есть сообщения журнала записать в один файл, тогда вы точно знаете, как называется файл, потому что вы уже указали его в конфигурации конвейера журнала: logs\\log-scheduler-.txt.

Но если вы хотите использовать RollingInterval затем вы можете проверить папку, в которую записываются ваши файлы журналов, и найти файлы журналов, которые были обновлены с момента запуска вашего приложения, путем захвата текущей метки времени при запуске приложения и просмотра в атрибуте LastWriteTimeUtc файлов журналов в файловой системе, чтобы увидеть все, что изменилось с того времени.

например

DateTime appStartTime = DateTime.UtcNow;

// ... (app code)

// Ensure that all messages are flushed to the file
Log.CloseAndFlush();

// Get all log files modified since the app started
var logFilesUpdatedInThisSession = new DirectoryInfo(@"C:\Temp\logs\")
    .EnumerateFileSystemInfos("log-scheduler-*.txt")
    .Where(f => f.LastWriteTimeUtc >= appStartTime)
    .OrderBy(f => f.LastWriteTimeUtc)
    .ToList();

if (logFilesUpdatedInThisSession.Any())
{
    // Send all files via e-mail ...
}   

Другая альтернатива (лучше IMO) будет быть не отправлять электронные письма вообще из вашего приложения, и просто отправлять журналы на сервер, такой как Seq сервер, который позволяет вам легко просматривать журналы, применять фильтры и др. * 102 5 *., Что намного удобнее, чем открывать файл журнала, прикрепленный к электронному письму в текстовом редакторе.

Seq

...