log4net 无法输出日志,跟踪发现IsErrorEnabled等,都是Flase。
因为这是个半路接手的项目,写法和我之前的习惯不一样,所以也没看出问题出在哪里。
代码如下:
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected void Page_Load(object sender, EventArgs e)
{
try
{
Log.Error("输出日志");
}
catch(Exception ex)
{
Log.Error("输出异常日志");
}
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
Log.Error("输出日志");
}
catch(Exception ex)
{
Log.Error("输出异常日志");
}
}
log4net配置放在web.config里面,分别是
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\\"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<maxSizeRollBackups value="-1"/>
<maximumFileSize value="10MB"/>
<staticLogFileName value="false"/>
<DatePattern value="yyyy-MM-dd".txt""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<!--1. ALL 2. DEBUG 3. INFO 4. WARN 5. ERROR 6. FATAL 7. OFF-->
<appender-ref ref="RollingFileAppender"/>
</root>
</log4net>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\\"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<maxSizeRollBackups value="-1"/>
<maximumFileSize value="10MB"/>
<staticLogFileName value="false"/>
<DatePattern value="yyyy-MM-dd".txt""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<!--1. ALL 2. DEBUG 3. INFO 4. WARN 5. ERROR 6. FATAL 7. OFF-->
<appender-ref ref="RollingFileAppender"/>
</root>
</log4net>
最后百度了一下,发现原来,还需要在Properties下面的AssemblyInfo.cs中加入[assembly: log4net.Config.XmlConfigurator(ConfigFile = "web.config", Watch = true)]
直接加到最后一行即可,这里面的web.config是log4net配置文件所在的文件名,也可是单独的文件,如log4net.conig
我之前的写法,都是动态加载的,如:
var path = AppDomain.CurrentDomain.BaseDirectory + @"\log4net_config.xml";
log4net.Config.XmlConfigurator.Configure(new FileInfo(path));
log4net.Config.XmlConfigurator.Configure(new FileInfo(path));