【发布时间】:2019-04-20 17:47:31
【问题描述】:
我有一个 log4net 包装器,用于在 web api 应用程序中记录错误消息。它工作正常,但我无法记录调用方法名称。它只显示顶级方法名称。可以说,我有一个 A 类的方法 a 调用 B 类的方法 b 和 b 记录错误消息。 Log4net 仅显示 A 类和方法 a,但我想显示完整的调用链 A-a-B-b 或至少 B-b
private static readonly ILog LoggerObject = LogManager.GetLogger("ErrorLog");
log4net 配置
<log4net>
<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
<file value="LogBackUp2.log" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd.'Err'" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%M %C] - %message%newline" />
</layout>
</appender>
<logger name="ErrorLog">
<maximumFileSize value="15MB" />
<appender-ref ref="ErrorLog" />
</logger>
</log4net>
如果我使用它,那么 log4net 不会创建任何日志文件。
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
【问题讨论】:
-
我认为如果方法由于编译器优化而被内联,'GetCurrentMethod()' 会给出错误的结果。也许您可以使用 CallerMemberName 属性。
-
见this线程。
标签: c# asp.net-web-api logging log4net log4net-appender