我想做这样的事情:
<script RunAt="server">
private static log4net.ILog _logger = null;
public static log4net.ILog Logger
{ get { return _logger; } }
protected void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
log4net.Config.XmlConfigurator.Configure();
_logger = log4net.LogManager.GetLogger("DtWebLogger");
}
....
</script>
我想知道在此之后我可以在每个页面中使用相同的记录器对象。
那么,这可能吗?或者我可以在哪里即时记录Logger的全局实例?
答案 0 :(得分:2)
您不需要Logger的全局实例。相反,你想要每个班级一个。您要记录的每个类应该具有以下内容:
private static readonly log4net.ILog _logger = log4net.LogManager.GetLogger(typeof(MyClass));
类型信息用作记录器输出的一部分。您还可以创建自己的包装ILog的类,并为您提供一个构造函数,从StackFrame中提取当前类的类型。
答案 1 :(得分:0)
你的inited是对的,log4net.LogManager.GetLogger已经使用了一个实例,不需要再做了。
答案 2 :(得分:0)
您可以将其声明为属性并像这样使用:
private static readonly log4net.ILog Log = log4net.LogManager
.GetLogger(.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
如前所述,您不需要全局记录器。声明嵌套作用域。