如何在企业库日志文件侦听器的文件名中指定模板或标记
How to specify template, or tokens in filename of Enterprise Library Logging file listener
从我读到的内容来看,企业库不允许在文件名中使用标记,这很奇怪,因为所有其他日志记录解决方案都允许。
这很混乱,我肯定遗漏了一些东西。因为我什至无法在平面或 lolling 文件侦听器中指定进程名称。
NLog
<target name="txtFile"
xsi:type="File"
fileName="${cached:cached=true:inner=${date:format=yyyy-MM-dd HH-mm-ss}}.txt"
layout="${longdate} ${level} ${message}"/>
Log4Net
<file type="log4net.Util.PatternString" value="~/App_Data/%property{LogName}" />
我知道的唯一解决方案(不包括编程设置)现在是在进程级别使用环境变量
<add name="loggingErrorsLog"
fileName="%LOGS_DIR%\%PROCESSNAME%\loggingErrors.log" ...
并在代码中设置这些变量:
var logsDir = Environment.GetEnvironmentVariable(EnvVarLogsRoot, EnvironmentVariableTarget.Machine) ?? "Logs";
Environment.SetEnvironmentVariable(EnvVarLogsRoot, logsDir);
从我读到的内容来看,企业库不允许在文件名中使用标记,这很奇怪,因为所有其他日志记录解决方案都允许。
这很混乱,我肯定遗漏了一些东西。因为我什至无法在平面或 lolling 文件侦听器中指定进程名称。
NLog
<target name="txtFile"
xsi:type="File"
fileName="${cached:cached=true:inner=${date:format=yyyy-MM-dd HH-mm-ss}}.txt"
layout="${longdate} ${level} ${message}"/>
Log4Net
<file type="log4net.Util.PatternString" value="~/App_Data/%property{LogName}" />
我知道的唯一解决方案(不包括编程设置)现在是在进程级别使用环境变量
<add name="loggingErrorsLog"
fileName="%LOGS_DIR%\%PROCESSNAME%\loggingErrors.log" ...
并在代码中设置这些变量:
var logsDir = Environment.GetEnvironmentVariable(EnvVarLogsRoot, EnvironmentVariableTarget.Machine) ?? "Logs";
Environment.SetEnvironmentVariable(EnvVarLogsRoot, logsDir);