我正在尝试将 Log4Net 与 Unity 和拦截一起使用......看起来一切都应该工作,但没有......我有两个问题......我认为有一个解决方案。当我登录文件时,我还应该记录我正在记录的方法。事实上,我有这样的配置:
<appender name="MyFileAppender" type="log4net.Appender.RollingFileAppender">
...
<layout type="log4net.Layout.PatternLayout">
<!-- %d = date, %t = thread, %p = level, %m = message, %n = new line -->
<param name="ConversionPattern" value="%d{dd/MMM/yyyy HH:mm:ss} [%t] %-2p - %M %m%n"/>
</layout>
</appender>
在我拥有的模式中%M
,这应该是我正在调用的方法......但我正在使用 Unity 拦截,因此,记录的方法名称是 INVOKE:
var result = getNext().Invoke(input, getNext);
正是这种方法通过反射调用了我的真实方法。那么如何使用PatternLayout
log4Net 解决这个问题呢?可能吗?我的第二个问题,我应该有两个不同的附加程序......我会创建一个名为MyNamespace.[MyClass].[MyMethod]
<logger name="MyNamespace.MyClass.MyMethod">
<level value="ERROR" />
<appender-ref ref="WebsiteFileAppender" />
</logger>
但这行不通,因为对于 log4net,我正在记录另一种方法,也就是说invoke
,而不是我的真实方法。我希望一切都清楚。
任何人都可以帮助我吗?
谢谢