将动态值传递给appender

时间:2011-10-13 18:29:46

标签: log4net appender

我正在创建不同的报告并尝试传递报告名称并将其附加到log4net报告的名称。每次运行报告时报告名称都会有所不同,因此将动态分配报告名称 我已尝试使用LOG4NET.GLOBALCONTEXT.PROPERTIES("RptName") = sReportName",但我得到的只是报告标题中的'null'值。

class Program
{
    static void Main(string[] args)
    {
        log4net.Config.XmlConfigurator.Configure(); 
        log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));

        log4net.GlobalContext.**Properties("RptName")** = sReportName
        log.Info("this is an info message"); 
        Console.ReadLine(); 
    }
}
    <!--RollingFileAppender:  Provides output of all log entries to a file in the \logs directory
          Filename:  RSGetReport_yyyyMMdd_hh:mm:ss_processID.txt-->  
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString"  value="logs\RSGetReport_%date{yyyyMMdd}_%date{hhmmss}_%processid**_%property{myContext}.**txt" />
      <appendToFile value="true" />
      <rollingStyle value="Once" />
      <maxSizeRollBackups value="10" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="ALL" />
    </filter>
      <maximumFileSize value="1MB" />
      <countDirection value="1" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>strong text

1 个答案:

答案 0 :(得分:0)

您需要在配置log4net之前设置全局属性。另请参阅此question