log4net:在两个不同的项目中使用dll时识别条目程序集
本文关键字:dll 识别 程序集 项目 两个 log4net | 更新日期: 2023-09-27 18:04:51
我正试图找到一个干净的解决方案,这个问题:我有项目A和项目B都使用一个共同的dll。假设common有一个名为hello()的方法,该方法正在向日志
写入内容。当我写日志时,我想在日志中写一个标识,说明调用是从项目a还是b中的dll开始的。
这可能吗?
我想到的一个解决方案是在A和B的开始序列中初始化记录器,然后将记录器存储在ThreadContext中。但问题是,如果创建了一个新线程,日志记录器将丢失)您可以通过将%stacktrace{level}或%stacktracedetail{level}添加到您的转换模式来做到这一点。这将为您提供您定义的堆栈框架的数量,在跟踪中的级别。假设你的类型告诉你调用的是哪个dll
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%stacktrace{3}" />
异常堆栈用于输出日志事件的堆栈跟踪堆栈跟踪级别说明符可以用大括号括起来。为例子中,%加{}。如果没有堆栈跟踪级别说明符输出使用格式:type3。MethodCall3>type2。MethodCall2> type1。MethodCall1此模式不可用用于紧凑框架组件。
stacktracedetail
用于输出日志事件的堆栈跟踪堆栈跟踪级别说明符可以用大括号括起来。例如,%stacktracedetail{level}。如果如果没有给出堆栈跟踪级别说明符,则假定输出使用1格式:type3。MethodCall3(type param,…)> type2。MethodCall2(类型参数,…)> type1。MethodCall1(参数类型,…)这个模式不是可用于紧凑框架组件。