如何解决一起填充多个Log4Net模式通配符
我想在我们的日志输出中包含类和方法的名称,并以固定的宽度组合起来,看起来像这样;
ClassA.MethodA - message
AnotherClass.AnotherMethod- message
WhateeverClass.Meth - message
SomeReallyLongClass.AndAreallyLongMethod- message
是否可以将%-50class.method
之类的2个通配符组合在一起?
谢谢!
解决方法
不存在对填充转换模式组合的内置支持。
您最好的选择是实现自定义PatternLayoutConverter
,返回%class
和%method
的组合结果。在这单个代码上,您可以按常规方式应用填充说明符。
图案布局
namespace PFX
{
public class ClassAndMethodPatternConverter : PatternLayoutConverter
{
protected override void Convert(TextWriter writer,LoggingEvent loggingEvent)
{
var info = loggingEvent.LocationInformation;
var text = $"{info.ClassName}.{info.MethodName}";
writer.Write(text);
}
}
}
在Log4net
配置文件中的注册和使用情况
PFX.ClassAndMethodIdPatternConverter,MyLibrary
代表上述模式转换器的全名,由名称空间,类和程序集组成。
<appender name="consoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<converter>
<name value="classandmethod" />
<type value="PFX.ClassAndMethodPatternConverter,MyLibrary" />
</converter>
<conversionPattern value="%date | %logger | %level | %-50classandmethod | %message | %exception%n" />
</layout>
</appender>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。