c# - 使用项目程序集信息的 log4net 文件路径

标签 c# .net log4net

我在 log4net.config 中有以下内容定义了我的记录器:

  <!-- Setup Rolling Log File to log all information -->
  <appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender" >
    <file value="${ProgramData}\\My Company\\My Product\\log\\Debug" />
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <datePattern value="_yyyy-MM.\tx\t"/>
    <staticLogFileName value="false"/>
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %-5level - %message%newline" />
    </layout>
  </appender>

有没有办法使用项目的 Assembly.cs 信息来构建日志路径,例如:

<file value="${ProgramData}\\${AssemblyCompany}\\${AssemblyProduct}\\log\\Debug" />

最佳答案

您可以使用 log4net 的 GlobalContext 来做到这一点以及 Pattern Layout在文件配置中。

因此,在配置之前设置值(有一个从 AssemblyInfo here 获取它们的示例)

// Properties must be set before configuration

log4net.GlobalContext.Properties["Company"] = "Company Name";
log4net.GlobalContext.Properties["Product"] = "Product Name";

log4net.Config.XmlConfigurator.Configure(…);

然后在配置中(注意文件类型必须是PatternString):

 <file type="log4net.Util.PatternString" 
       value="${ProgramData}\%property{Company}\%property{Product}\Log\Debug\log.log" />

这将计算为C:\ProgramData\Company Name\Product Name\Log\Debug\log.log

关于c# - 使用项目程序集信息的 log4net 文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31538989/

相关文章:

c# - 在不锁定资源的情况下使用 BitMap 对象

c# - 类项目未从主项目加载 log4net.config

c# - Log4Net:如何将程序内部的日志记录结果输出到一个变量中?

c# - WPF XAML : Difference between DataContext as attribute or property for XAML element?

c# - 将文件上传控件作为参数传递给方法

c# - 如何创建一个文件来填充 HttpContext.Current.Request.Files?

c# - 如何匹配<>之间的字符串?

c# - 在 C# 中将 COM 对象作为参数传递

c# - 使用 .NET 的 ICorProfilerInfo::SetILFunctionBody,是否可以将 try-finally EH 子句添加到没有任何异常处理的方法中?

logging - 分析log4net日志的工具