我正在尝试在Visual Studio 2005的ASP.NET应用程序中使用log4net。我已经声明了一个logger实例,如下所示:
Private Shared ReadOnly log As ILog = LogManager.GetLogger("")
我试图以下列方式使用它:
If log.IsDebugEnabled Then
log.Debug("Integration Services Constructed")
End If
这是我的配置:
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="..\\logs\\logfile.log"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="1MB"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
不幸的是,log.IsDebugEnabled
总是错误的。
如何配置log4net以便我只能记录调试消息?
答案 0 :(得分:43)
在调用LogManager.GetLogger(“”)
之前你必须调用log4net.Config.XmlConfigurator.Configure(); 在ASP.NET应用程序中,您可能希望将此调用放在Application_Start
中答案 1 :(得分:25)
是的,就像安森所说的那样。此外,如果您在类库中调用Configure,则可以通过向类中添加属性来执行此操作:
[assembly: XmlConfigurator(Watch = true)]
如果您使用的是log4net.config
文件,请改为使用它:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
答案 2 :(得分:9)
如果您正在为log4net使用单独的配置文件,请执行以下操作:按照所有其他设置说明操作后,确保右键单击visual studio解决方案资源管理器中的文件,选择属性,展开“高级”选项组,将“复制到输出目录”值设置为“始终复制”。那将是魔术...... :)欢呼!!
答案 3 :(得分:2)
如果您在代码中而不是在配置文件中设置log4net,则可以在log4net.Config.BasicConfigurator.Configure
之前致电GetLogger
。
答案 4 :(得分:1)
VB.NET -
<Assembly: log4net.Config.XmlConfigurator(Watch:=True)>
答案 5 :(得分:0)
在使用log:
之前,请在任何方法中使用此方法log4net.Config.XmlConfigurator.Configure();
在App.Config中,设置应为:
<root>
<level value="ALL" />
<appender-ref ref="AppenderName" />
</root>