一起填充多个 Log4Net 模式通配符
Padding Multiple Log4Net Pattern Wildcards Together
我想在我们的日志输出中包含 class 和方法名称,组合固定宽度看起来像;
ClassA.MethodA - message
AnotherClass.AnotherMethod- message
WhateeverClass.Meth - message
SomeReallyLongClass.AndAreallyLongMethod- message
是否可以以某种方式组合 2 个通配符,例如 %-50class.method
?
谢谢!
不支持填充转换模式组合。
您最好的选择是实施自定义 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
表示上面模式转换器的全名,由命名空间、class和程序集组成。
<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>
我想在我们的日志输出中包含 class 和方法名称,组合固定宽度看起来像;
ClassA.MethodA - message
AnotherClass.AnotherMethod- message
WhateeverClass.Meth - message
SomeReallyLongClass.AndAreallyLongMethod- message
是否可以以某种方式组合 2 个通配符,例如 %-50class.method
?
谢谢!
不支持填充转换模式组合。
您最好的选择是实施自定义 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
表示上面模式转换器的全名,由命名空间、class和程序集组成。
<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>