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