2016-10-11 13 views
2

Есть ли способ получить полное имя файла из класса журнала? Регистратор создает файл с таким форматом, как C:\MyPath\log-20160631.txtSerilog: открыть файл журнала

Я не могу получить доступ к исходному имени файла, которое я использовал для инициализации регистратора.

Edit: Вот INIT из регистратора:

Log.Logger = new LoggerConfiguration() 
      .MinimumLevel.Debug() 
      .WriteTo.LiterateConsole() 
      .WriteTo.RollingFile(@"C:\MyPath\log.txt") 
      .CreateLogger(); 

В любом месте в коде я могу использовать, например, Log.Information(), но как я могу получить информацию о раковине? Я хочу получить имя файла, которое я передал в растровый файл.

Мой текущий обходной путь заключается в создании реального файла вручную (сумасшедшую уродливый код):

public string LogFilename 
{ 
    get 
    { 
     string path = Path.GetDirectoryName(LogFilenameTemplate); 
     string filenameWithoutExtension = Path.GetFileNameWithoutExtension(LogFilenameTemplate); 
     string extension = Path.GetExtension(LogFilenameTemplate); 
     string date = DateTime.Now.ToString("yyyyMMdd"); 
     string fullFilename = Path.Combine(path, filenameWithoutExtension + "-" + date + extension); 
     return fullFilename; 
    } 
} 

Формат я получил от GitHub Repo.

+1

Непонятно, что вы подразумеваете под «Я не могу получить доступ к исходному имени файла, которое я использовал для инициализации регистратора». Отправьте свой код инициализации SERILOG и уточните, где и зачем вам нужно имя файла. – PatrickSteele

+0

Я добавил пример кода и расширенное описание и текущее обходное решение. – Suplanus

+0

От skimming [через код] (https://github.com/serilog/serilog-sinks-rollingfile/tree/dev/src/Serilog.Sinks.RollingFile/Sinks/RollingFile), я не думаю, что это возможно. получить имя файла, который в настоящее время используется. Думаю, еще один вопрос: зачем вам это нужно? Возможно, есть еще один способ сделать то, что вам нужно, не зная имя файла. – PatrickSteele

ответ

2

Нет, нет способа получить имя файла из Serilog. Ваш лучший доступный вариант - использовать классы System.IO для отображения файлов в каталоге, а затем открыть его с самой последней датой изменения.