我在 ASP.NET MVC 网站中使用(可能滥用)log4net。我想每个类(class)有一个记录器 ( which the docs suggest ),但似乎我需要为每个类(class)预先配置一个记录器。
是吗?我需要预定义每个记录器吗?
我正在追加到 SqlServer 并且可以在架构中看到名为 Logger
的列。似乎在该字段中放置任何我想要的东西应该很容易,但我能找到的唯一动态记录器创建是 here .我错过了什么吗?
最佳答案
您不需要预先定义每个记录器。相反,传统的方法是使用 log4net 记录器的标准模式,该模式在消费类中使用反射来按 Type
声明记录器。只需将此属性转储到每个类中即可:
private static log4net.ILog _logger;
private static log4net.ILog Logger
{
get
{
if( _logger == null )
{
Type type = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType;
_logger = log4net.LogManager.GetLogger( type );
}
return _logger;
}
}
关于c# - Log4Net 中每种类型的动态记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737412/