Mic*_*ann 3 configuration logging log4net
我希望能够在我的日志文件中记录类文件和行号,所以我使用以下配置...
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--etc-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level (%file:%line) %logger => %message%newline" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
但是,%file属性使我的日志文件条目太长,无法轻松阅读....
2009-08-07 16:41:55,271 [7] INFO (O:\mystream\aevpallsrv\DotNet\com.mycompany.au\myapp\Myappp\Controller.cs:75) MyApp.Controller => Controller.EnqueueWorkerThreads() - START
Run Code Online (Sandbox Code Playgroud)
有没有办法只显示类文件('Controller.cs')而不是文件的完整路径???
迈克尔
虽然您询问文件名,但我相信您可以使用%type来获取完全限定的类型名称(abclassName).如果您只想要类名,请使用%type {1}
请注意,生成调用者信息(%文件和%类型)的任何方法都具有与之关联的性能成本.
另外,您可以通过使用类型名称命名Logger来绕过性能损失.
namespace MyNamespace
{
public class Foo
{
private static ILog log = LogManager.GetLogger(typeof(Foo));
}
}
Run Code Online (Sandbox Code Playgroud)
您的转换模式如下所示:
"%date [%thread] %-5level %logger %message"
Run Code Online (Sandbox Code Playgroud)
你的记录器将是" MyNameSpace.Foo ".同样,如果您只需要类名,请使用" %logger {1},它将解析为" Foo ".
这种方法的最大优点之一是您可以利用log4net的分层存储库系统来调整每种类型的日志记录级别:
<!-- all classes in MyNamespace are warn -->
<logger name="MyNamespace">
<level value="WARN" />
</logger>
<!-- only Foo is in debug -->
<logger name="MyNamespace.Foo">
<level value="DEBUG" />
</logger>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2291 次 |
| 最近记录: |