2011-01-12 76 views
3

我正在使用.NET common logging infrastructure V2.0。我得到这样一个ILog对象:.NET通用日志记录中记录器名称的含义是什么?

ILog log = LogManager.GetLogger("myLogName"); 

我不明白日志名称的含义和作用。 如果我在整个过程中使用相同的名字,或者我可以只为每个班级使用LogManager.GetCurrentClassLogger()(是的,我知道有性能损失),这有什么关系吗?

p.s: 我可能会使用log4net & ConsoleOutLogger。

回答

0

我相信名字意味着任何你想要的意思。在不同地方使用不同名称有两个主要原因:

  • 您可以为日志记录器配置日志记录(例如,如果您正在调查某个特定区域的代码,请调出日志级别)
  • 您可以很容易地从名称中看到代码区域,因此您的消息已被有效地使用。
+0

感谢乔恩。但是我没有找到一种通过配置来改变特定日志名称的日志级别的方法。如何做到这一点? – HuBeZa 2011-01-12 09:20:03

0

请参阅下面的GetLogger实施。名称是具体的记录器。

public sealed class LogManager 
{ 
    ... 
    public static ILoggerFactoryAdapter Adapter { get; set; } 

    public static ILog GetLogger(string name) 
    { 
     return Adapter.GetLogger(name); // Adapter is ILoggerFactoryAdapter 
    } 
} 

public interface ILoggerFactoryAdapter 
{ 
    // Methods 
    ILog GetLogger(string name); 
    ILog GetLogger(Type type); 
} 

对于log4net的适配器实现看起来像这样

public class Log4NetLoggerFactoryAdapter : ILoggerFactoryAdapter 
{ 
    ... 
    public ILog GetLogger(string name) 
    { 
    return new Log4NetLogger(LogManager.GetLogger(name)); // LogManager - is log4net.Logmanager 
    } 
}