2
有沒有辦法從日誌類中獲取完整的文件名? 記錄器創建一個格式爲C:\MyPath\log-20160631.txt
的文件Serilog:打開日誌文件
我無法訪問我用於記錄器初始化的源文件名。
編輯: 這裏是記錄器的初始化:
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
從瀏覽[通過代碼](https://github.com/serilog/serilog-sinks-rollingfile/tree/dev/src/Serilog.Sinks.RollingFile/Sinks/RollingFile),我不認爲這是可能的獲取當前正在使用的文件名。我想另一個問題是爲什麼你需要它?也許還有另一種方法來做你不需要知道文件名就需要做的事情。 – PatrickSteele