Есть ли способ получить полное имя файла из класса журнала? Регистратор создает файл с таким форматом, как C:\MyPath\log-20160631.txt
Serilog: открыть файл журнала
Я не могу получить доступ к исходному имени файла, которое я использовал для инициализации регистратора.
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.
Непонятно, что вы подразумеваете под «Я не могу получить доступ к исходному имени файла, которое я использовал для инициализации регистратора». Отправьте свой код инициализации SERILOG и уточните, где и зачем вам нужно имя файла. – PatrickSteele
Я добавил пример кода и расширенное описание и текущее обходное решение. – Suplanus
От skimming [через код] (https://github.com/serilog/serilog-sinks-rollingfile/tree/dev/src/Serilog.Sinks.RollingFile/Sinks/RollingFile), я не думаю, что это возможно. получить имя файла, который в настоящее время используется. Думаю, еще один вопрос: зачем вам это нужно? Возможно, есть еще один способ сделать то, что вам нужно, не зная имя файла. – PatrickSteele