08/08/2011 | jiangws2002 如何使用log4net在Web中应用?其实很简单,你只要对程序作如何修改即可: 1.在common中加入log4netHelper.cs public class log4netHelper { public static void debug(string message) { log4net.ILog log = log4net.LogManager.GetLogger(“Test”); if (log.IsDebugEnabled) { log.Debug(message); } log = null; } public static void error(string message) { log4net.ILog log = log4net.LogManager.GetLogger(“Test”); if (log.IsErrorEnabled) { log.Error(message); } log = null; } public static void fatal(string message) { log4net.ILog log = log4net.LogManager.GetLogger(“Test”); if (log.IsFatalEnabled) { log.Fatal(message); } log = null; } public static void info(string message) { log4net.ILog log = log4net.LogManager.GetLogger(“Test”); if (log.IsInfoEnabled) { log.Info(message); } log = null; } public static void warn(string message) { log4net.ILog log = log4net.LogManager.GetLogger(“Test”); if (log.IsWarnEnabled) { log.Warn(message); } log = null; } } 2.在AssemblyInfo.cs中增加一行 [assembly: log4net.Config.XmlConfigurator(ConfigFile = “log4net.config”, Watch = true)] 3.增加log4net.config文件,进行要求的配置:每天换文件名等,请参考 <?xml version=”1.0″ encoding=”utf-8″ ?> <configuration> <configSections> <section name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler,log4net” /> </configSections> <log4net> <!– OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL –> <!– Set root logger level to ERROR and its appenders –> <root> <level value=”ALL”/> <appender-ref ref=”SysAppender”/> </root> <!– Print only messages of level DEBUG or above in the packages –> <logger name=”Test”> <level value=”DEBUG”/> <appender-ref ref=”SysAppender” /> </logger> <appender name=”SysAppender” type=”log4net.Appender.RollingFileAppender,log4net” > <param name=”File” value=”log/” /> <param name=”AppendToFile” value=”true” /> <param name=”RollingStyle” value=”Date” /> <param name=”DatePattern” value=”"Logs_"MMddyyyy".txt"” /> <param name=”StaticLogFileName” value=”false” /> <layout type=”log4net.Layout.PatternLayout,log4net”> <param name=”ConversionPattern” value=”%d{dd-MM-yyyy} [%t] %-5p %c – %m %F %n” /> <param name=”Header” value=” ———————-header————————– ” /> <param name=”Footer” value=” ———————-footer————————– ” /> </layout> </appender> </log4net> </configuration> 4.使用: sis_common.log4netHelper.info(“Start Page….”); LOG4Net.config修改了一下 1.原来出来只有日期,加上时间 2.只留下 <root> <level value=”ALL”/> <appender-ref ref=”SysAppender”/> </root> 其他的删除。 <?xml version=”1.0″ encoding=”utf-8″ ?> <configuration> <configSections> <section name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler,log4net” /> </configSections> <log4net> <!– OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL –> <!– Set root logger level to ERROR and its appenders –> <root> <level value=”ALL”/> <appender-ref ref=”SysAppender”/> </root> <appender name=”SysAppender” type=”log4net.Appender.RollingFileAppender,log4net” > <param name=”File” value=”log/” /> <param name=”AppendToFile” value=”true” /> <param name=”RollingStyle” value=”Date” /> <param name=”DatePattern” value=”"Logs_"MMddyyyy".txt"” /> <param name=”StaticLogFileName” value=”false” /> <layout type=”log4net.Layout.PatternLayout,log4net”> <param name=”ConversionPattern” value=”%d{dd-MM-yyyy hh:mm:ss} [%t] %-5p %c – %m %F %n” /> <param name=”Header” value=” ———————-header————————– ” /> <param name=”Footer” value=” ———————-footer————————– ” /> </layout> </appender> </log4net> </configuration> Log4net日志文件自动按月份存放和日志独占问题的解决 让log4net日志文件自动按月份存放 log4net日志文件的作用还真不小,可以保存管理员、用户对数据库的任何操作,保存管理员和用户的登录记录,分析系统运行错误,所以不舍得随便将日志文件Delete。如果时间长了,日志文件夹一定会有很多很多日志文件,不便于管理员查看。 所以让log4net日志文件自动按月份存放是必须的,其实方法很Easy,额是突发奇想在DatePattern value中增加“yyyyMM\”,运行后果然如额所愿。 也就是修改Web.Config文件如下: <file value=”Log\”/><!–日志文件夹及文件名开头–> <DatePattern value=”yyyyMM\yyyy-MM-dd".log"”/><!–文件名后面加上.log后缀,必须使用转义字符–> 解决log4net独占日志文件的问题 由于log4net默认情况下会独占日志文件该文件不能被File.Open,否则会出现异常错误,甚为郁闷。网上找到的解决方法: 修改Web.Config文件,在<appender name=”RollingFileAppender” type=”log4net.Appender.RollingFileAppender”></appender>节中加入:<lockingModel type=”log4net.Appender.FileAppender+MinimalLock” />就可以了,即使用最小锁定模型(minimal locking model),以允许多个进程可以写入同一个文件 所以现在最新的log4net.config是: <?xml version=”1.0″ encoding=”utf-8″ ?> <configuration> <configSections> <section name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler,log4net” /> </configSections> <log4net> <!– OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL –> <!– Set root logger level to ERROR and its appenders –> <root> <level value=”ALL”/> <appender-ref ref=”SysAppender”/> </root> <appender name=”SysAppender” type=”log4net.Appender.RollingFileAppender,log4net” > <lockingModel type=”log4net.Appender.FileAppender+MinimalLock” /> <param name=”File” value=”log/” /> <param name=”AppendToFile” value=”true” /> <param name=”RollingStyle” value=”Date” /> <param name=”DatePattern” value=”"Logs_"MMddyyyy".txt"” /> <param name=”StaticLogFileName” value=”false” /> <layout type=”log4net.Layout.PatternLayout,log4net”> <param name=”ConversionPattern” value=”%d{dd-MM-yyyy hh:mm:ss} [%t] %-5p %c – %m (%F:%L) %n” /> <param name=”Header” value=” ———————-header————————– ” /> <param name=”Footer” value=” ———————-footer————————– ” /> </layout> </appender> </log4net> </configuration>