Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reflection 如何使用Log4Net进行拦截(MS Unity)_Reflection_Log4net_Unity Container_Unity Interception - Fatal编程技术网

Reflection 如何使用Log4Net进行拦截(MS Unity)

Reflection 如何使用Log4Net进行拦截(MS Unity),reflection,log4net,unity-container,unity-interception,Reflection,Log4net,Unity Container,Unity Interception,我正在尝试使用Log4Net与统一和拦截。。。看起来一切都应该正常,但不是。。。我有两个问题。。。我认为有一个解决办法。 当我登录到该文件时,我还应该记录我正在记录的方法。事实上,我有这样的配置: <appender name="MyFileAppender" type="log4net.Appender.RollingFileAppender"> ... <layout type="log4net.Layout.PatternLayout"> <!

我正在尝试使用Log4Net与统一和拦截。。。看起来一切都应该正常,但不是。。。我有两个问题。。。我认为有一个解决办法。 当我登录到该文件时,我还应该记录我正在记录的方法。事实上,我有这样的配置:

<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>
正是这个方法通过反射调用了我的真实方法。那么,如何使用log4Net的
patternalyout
解决这个问题呢?可能吗? 我的第二个问题,我应该有两个不同的附加器。。。我将创建一个名为
MyNamespace.[MyClass].[MyMethod]

<logger name="MyNamespace.MyClass.MyMethod">
  <level value="ERROR" />
  <appender-ref ref="WebsiteFileAppender" />
</logger>

但是这不起作用,因为对于log4net,我正在记录另一种方法,即
调用
,而不是我真正的方法。我希望一切都清楚

有人能帮我吗


谢谢

只需向log4net线程添加一个自定义属性,其中包含要记录的方法的名称,并在模式中记录此属性

log4net.ThreadContext.Properties[ "myMethod" ] = theRealMethod;
在配置文件中

<conversionPattern value="%logger (%property{myMethod}) [%level]- %message%newline" />

关于第二点,log4net不会基于方法名路由appender,而是在类名处停止。如果您只想记录来自一个方法的一些事件,只需在您定义的自定义属性上使用带有PropertyFilter的

<conversionPattern value="%logger (%property{myMethod}) [%level]- %message%newline" />