log4net - 单个 FileAppender 的每个级别的 conversionPattern?
log4net - conversionPattern per level for single FileAppender?
虽然设置不同的日志文件并不困难,每个日志文件都有不同的 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。这能做到吗?
你不能在配置文件中完成它,但你可以使用模式布局转换器来完成它。
查看资料here
这应该是转换后的代码:
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>
虽然设置不同的日志文件并不困难,每个日志文件都有不同的 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。这能做到吗?
你不能在配置文件中完成它,但你可以使用模式布局转换器来完成它。
查看资料here
这应该是转换后的代码:
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>