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 *., Что намного удобнее, чем открывать файл журнала, прикрепленный к электронному письму в текстовом редакторе.