log4net的 - 每单FileAppender水平conversionPattern?(log4

2019-10-24 12:32发布

虽然它并不难设置不同的日志文件,每一个不同的conversionPattern,每升一级,我想对所有的错误,但是,在这里我想详细的日志记录最小记录。 这是我当前配置的一个片段:

<appender name="WarningsAndBelowFileAppender" type="log4net.Appender.FileAppender">
  <file value="log.txt" />
  <appendToFile value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%m%n" />
  </layout>
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMax value="WARN" />
  </filter>
</appender>

<appender name="ErrorsFileAppender" type="log4net.Appender.FileAppender">
  <file value="errors.txt" />
  <appendToFile value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t] %-5p %c [%x] - %m%n" />
  </layout>
  <threshold value="ERROR" />
</appender>

我很想有这两种配置中进入一个日志文件,只需为每个不同的conversionPatterns。 可以这样做?

Answer 1:

你不能做到这一点的配置文件中,但你可以用图案布局转换器做出来。

见信息在这里

这应该是转换的代码:

class MyMessageConverter : PatternLayoutConverter
{
    protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
    {
        if (loggingEvent.Level.Value <= Level.Warn.Value)
        {
            writer.Write(loggingEvent.RenderedMessage);
        }
        else
        {
            writer.Write("{0} [{1}] {2,5} {3} - {4}",
                loggingEvent.TimeStamp,
                loggingEvent.ThreadName,
                loggingEvent.Level.Name,
                loggingEvent.LocationInformation.ClassName,
                loggingEvent.RenderedMessage);

        }
    }
}

这里是配置文件:

<appender name="FileAppender" type="log4net.Appender.FileAppender">
  <file value="log.txt" />
  <appendToFile value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%MSG%n" />
      <converter>
        <name value="MSG" />
        <type value="yournamespace.MyMessageConverter " />
      </converter>
  </layout>
</appender>


文章来源: log4net - conversionPattern per level for single FileAppender?