log4net - 一起填充多个 Log4Net 模式通配符
问题描述
我想在我们的日志输出中包含类和方法名称,并具有组合的固定宽度,看起来像这样;
ClassA.MethodA - message
AnotherClass.AnotherMethod- message
WhateeverClass.Meth - message
SomeReallyLongClass.AndAreallyLongMethod- message
是否有可能以某种方式结合 2 个通配符说 like %-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
表示上述模式转换器的全称,由命名空间、类和程序集组成。
<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>
推荐阅读
- kubernetes - 是否存在与 Openshift/Kubernetes 中的“限制”不同的“初始内存分配”?
- jasper-reports - Jaspersoft Reports,如何在 IF-ELSE 子句中检查文件是否存在?
- c# - 冒泡排序二维字符串数组
- java - 请求收到 MultipartFile 时的 MultipartException 和 IOFileUploadException
- mxnet - mxnet 模型转换为 onnx 成功但 ort.InferenceSession(model) 失败
- git - 提取自某个日期以来在 repo 中更改的所有文件
- java - 安排每 x 毫秒运行一次的任务
- android - 更改Android通知颜色的正确方法是什么?
- azure - Azure Cosmos DB - 对运行状况检查项目使用非常低的 TTL 有什么缺点吗?
- python - 如果条件与数据框