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

本文关键字:log4net 文件 路径 信息 项目 程序集 | 更新日期: 2023-09-27 18:04:00

我在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文件路径

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

所以在配置之前设置值(这里有一个从AssemblyInfo获取它们的示例)

// Properties must be set before configuration
log4net.GlobalContext.Properties["Company"] = "Company Name";
log4net.GlobalContext.Properties["Product"] = "Product Name";
log4net.Config.XmlConfigurator.Configure(…);

然后在config中(注意文件类型必须为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