在log4net FileAppender文件名中使用汇编版本

时间:2015-02-13 13:25:19

标签: c# .net log4net

我有一个log4net日志文件appender,定义如下。它工作正常。我想把exe的汇编版本作为文件名来更好地区分正在使用的版本。因此,在下面的示例中,如果我的应用程序的程序集版本是1.2.3.4,我想要ClientAppLog_v1.2.3.4.txt

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <param name="File" value="${USERPROFILE}\MyApp Logs\ClientAppLog.txt" />
  <param name="AppendToFile" value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="Header" value="[Header]&#xD;&#xA;" />
    <param name="Footer" value="[Footer]&#xD;&#xA;" />
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
  </layout>
</appender>

1 个答案:

答案 0 :(得分:4)

虽然log4net可能不直接支持这些,但您可以使用在创建记录器之前设置的通用log4net属性轻松地执行此操作,或者在配置log4net之前安全地执行此操作:

Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;

log4net.GlobalContext.Properties["LogFileName"] = version + "_logfile.txt";

log4net.Config.XmlConfigurator.Configure(…);

在配置中将<param name="File"替换为:

 <file type="log4net.Util.PatternString" 
       value="${USERPROFILE}\MyApp Logs\%property{LogFileName}" />

结果:

Image showing log file in correct location