如何在保存为文本文件时将参数添加到Log4Net

时间:2018-04-06 08:12:50

标签: c# log4net log4net-configuration

我使用log4net.Appender.RollingFileAppender。

我将日志保存到文本文件中。我想自定义属性值。

            <log4net debug="true">
            <appender name="file" type="log4net.Appender.RollingFileAppender, log4net">
              <file value="Log.txt" />
              <appendToFile value="true" />
              <rollingStyle value="Size" />
              <maxSizeRollBackups value="10" />
              <maximumFileSize value="1MB" />
              <staticLogFileName value="true" />
              <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %level %logger [%property{NDC}] - %message%newline" />
              </layout>
            </appender>
            <root>
              <level value="ALL" />
              <appender-ref ref="file" />
            </root>
          </log4net>

这是我的班级:

public static class log4netPark
{
    private static ILog _logger = null;

    private static log4net.ILog Logger
    {
        get
        {
            if (_logger == null)
            {
                _logger = LogManager.GetLogger(typeof(log4netPark));
                log4net.Config.XmlConfigurator.Configure();
            }
            return _logger;
        }
    }

    public static void Info(string Message, LogType tip)
    {
        Logger.Info(Message);
    }

    public static void Error(string Message, Exception ex, LogType tip)
    {
        Logger.Error(Message, ex);
    }
}

像这样保存到txtfile。

2018-04-05 18:37:23,772 [1] INFO IK_DL.log4netPark [(null)] - 用户已登录。

我将这些代码块尝试到Info方法中,但任何一个都无法工作:

GlobalContext.Properties["LOG_TYPE"] = 3;
GlobalContext.Properties["name"] = "tryThisOne";
ThreadContext.Stacks["logger"].Push("LoggerNameTrying");
LogicalThreadContext.Properties["&thread"] = 13;

使用AdoNetAppender时,我们可以添加参数。是否有可能使用RollingFileAppender或者我可以使用codeblockS吗?

2 个答案:

答案 0 :(得分:2)

您必须在格式字符串中提及属性。因此,如果要打印“LOG_TYPE”属性,请更改模式:

<conversionPattern value="... [%property{LOG_TYPE}] - %message%newline" />

答案 1 :(得分:0)

感谢@CodeCaster的帮助。

这就是我在App.config上所做的:

&#13;
&#13;
 <log4net debug="true">
    <appender name="file" type="log4net.Appender.RollingFileAppender, log4net">
      <file value="Log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="1MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level [%property{LOGGER}] [%property{LOG_TYPE}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="file" />
    </root>
  </log4net>
&#13;
&#13;
&#13;

这是代码部分:

 GlobalContext.Properties["LOG_TYPE"] = type.ToString();
 GlobalContext.Properties["LOGGER"] = GlobalInfos.User.UserName;