log4Net不能成功生成日志问题(关于配置错误)
调试发现问题原因在于 Log4Net IsInfoEnabled 一直为 false,返回的对象中所有 IsXXX 一直为false,这个问题的原因在于配置文件读取失败。
配置方式有两种:
1、直接在web.config 中配置,可如下
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <!-- 设置日志记录方式 --> <appender name="LogFileAppender" type="log4net.Appender.FileAppender, log4net"> <param name="File" value="D:\Senderlog.txt" /> <param name="AppendToFile" value="false" /> <layout type="log4net.Layout.PatternLayout, log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" /> </layout> </appender> <!--<appender name="Console" type="log4net.Appender.ConsoleAppender, log4net"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" /> </layout> </appender>--> <!-- 设置日志记录级别 --> <root> <priority value="INFO" /> <appender-ref ref="LogFileAppender" /> </root> <!-- Specify the level for some specific namespaces --> <!-- Level can be : ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF --> <logger name="Sender" additivity="true"> <level value="INFO" /> <appender-ref ref="LogFileAppender" /> </logger> </log4net>
2、直接新建如log4net.config 的配置文件,如下
<log4net> <!-- 设置日志记录方式 --> <appender name="LogFileAppender" type="log4net.Appender.FileAppender, log4net"> <param name="File" value="D:\Senderlog.txt" /> <param name="AppendToFile" value="false" /> <layout type="log4net.Layout.PatternLayout, log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" /> </layout> </appender> <!--<appender name="Console" type="log4net.Appender.ConsoleAppender, log4net"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" /> </layout> </appender>--> <!-- 设置日志记录级别 --> <root> <priority value="INFO" /> <appender-ref ref="LogFileAppender" /> </root> <!-- Specify the level for some specific namespaces --> <!-- Level can be : ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF --> <logger name="Sender" additivity="true"> <level value="INFO" /> <appender-ref ref="LogFileAppender" /> </logger> </log4net>
这两种配置方法的区别在与读取配置文件
方法1中读取方式是这样的:
log4net.Config.XmlConfigurator.Configure(); //这个地方是注册log4net 配置
或在AssemblyInfo.cs文件中添加
[assembly: log4net.Config .XmlConfigurator()]
方法2中则需要指定配置文件
log4net.Config.XmlConfigurator.Configure("文件信息"); //这个地方是注册log4net 配置,感兴趣的朋友可以根据下图进行相关配置,总之这个地方的效果和其它方法是一样的,目的都是为了加载log4net 中的相关配置信息。
或在AssemblyInfo.cs文件中添加
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
这句的意思是 找到名称为 log4net.config 的配置文件,不一定是web.config