我有一个从匿名方法记录日志的类。我已经把它简化了以说明这一点......
public class SocketFlusher
{
private static readonly ILog Log = LogManager.GetLogger(typeof(SocketFlusher));
public void Flush()
{
Wait.For(timeout, () =>
{
... // work
Log.DebugFormat("{0} bytes available", socket.Available);
}
}
}
我的 log4net 配置很好(我已经检查了 log4net debug="true"
输出和 appender does 工作)。我的 appender 布局是
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%-4thread] %-5level %class{1} - %message%newline"/>
</layout>
但是,我的日志输出中有那个疯狂的自动生成的静态类。
2011-03-21 18:10:20,053 [5 ] DEBUG SocketFlusher+<>c__DisplayClass1 - 82 bytes available
我想让它说 SocketFlusher
,获得这种格式的正确 appender 布局是什么?
最佳答案
您希望类名 出现在appender 输出中。并且您正在遵循 log4net 习惯用法,将您的记录器命名为类的名称...
private static readonly ILog Log = LogManager.GetLogger(typeof($CLASSNAME$));
你想在 appender 模式布局中做的是包含 %logger
名称模式而不是 %class
模式。
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%-4thread] %-5level %logger{1} - %message%newline"/>
</layout>
关于c# - 我可以让 log4net 附加真实的类名而不是生成的闭包类名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706223/