一、 Log4net是什么、优点
用来记录程序日志,优点:1.提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;2.日志信息可以输出到不同的地方(数据库,文件,邮箱等)。
二、 Log4net的结构
log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及 Layout(布局).
二、 Log4net的结构
第一步:首先下载log4net.dll并在项目中引用log4net.dll文件。
第二步:在Web.config文件中进行添加configSections的节点
1
2
3
4
5
|
<configSections> <!--log4net配置-->
<section name= "log4net"
type= "log4net.Config.Log4NetConfigurationSectionHandler,log4net"
/>
</configSections>
|
第三步:添加log4net配置节点
<!--log4net日志配置--> <log4net> <logger name="logerror"> <level value="ERROR" /> <appender-ref ref="ErrorAppender" /> </logger> <logger name="loginfo"> <level value="INFO" /> <appender-ref ref="InfoAppender" /> </logger> <!--<logger name="logdebug"> <level value="DEBUG"> <appender-ref ref="DebugAppender" /> </level> </logger>--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="C:\ErrorLog.txt" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaximumFileSize" value="1MB" /> <param name="RollingStyle" value="Size" /> <param name="StaticLogFileName" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5p %d [%c] %m%n" /> </layout> </appender> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="C:\InfoLog.txt" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaximumFileSize" value="1MB" /> <param name="RollingStyle" value="Size" /> <param name="StaticLogFileName" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5p %d [%c] %m%n" /> </layout> </appender> <!--<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="C:\DebugLog.txt" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaximumFileSize" value="1MB" /> <param name="RollingStyle" value="Size" /> <param name="StaticLogFileName" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5p %d [%c] %m%n" /> </layout> </appender>--> </log4net>
第四步:添加日记类logHelper
/// <summary> /// 使用LOG4NET记录日志的功能,在WEB.CONFIG里要配置相应的节点 /// </summary> public class LogHelper { //log4net日志专用 public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo"); public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror"); public static void SetConfig() { log4net.Config.XmlConfigurator.Configure(); } public static void SetConfig(FileInfo configFile) { log4net.Config.XmlConfigurator.Configure(configFile); } /// <summary> /// 普通的文件记录日志 /// </summary> /// <param name="info"></param> public static void WriteLog(string info) { if (loginfo.IsInfoEnabled) { loginfo.Info(info); } } /// <summary> /// 错误日志 /// </summary> /// <param name="info"></param> /// <param name="se"></param> public static void WriteLog(string info, Exception se) { if (logerror.IsErrorEnabled) { logerror.Error(info, se); } }
第五步:添加Global.cs配置
void Application_Start(object sender, EventArgs e) { //在应用程序启动时运行的代码 //初始日志的配置 LogHelper.SetConfig(); }
void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 Exception ex = HttpContext.Current.Server.GetLastError(); Base_Teacher teacher = Session[UCSKey.SESSION_LoginInfo] as Base_Teacher; if (teacher != null) { //记录错误日志 // LogHelper.WriteErrorLog("\r\n用户ID:" + teacher.YHZH + "\r\n用户名:" + teacher.XM + "\r\n客户机IP:" + Request.UserHostAddress + "\r\n错误地址:" + Request.Url + "\r\n异常信息:" + Server.GetLastError().Message, ex); //记录普通日志 LogHelper.WriteInfoLog("\r\n用户ID:" + teacher.YHZH + "\r\n用户名:" + teacher.XM + "\r\n客户机IP:" + Request.UserHostAddress + "\r\n错误地址:" + Request.Url + "\r\n错误时间:" + DateTime.Now); //记录debug日志 // LogHelper.WriteDebugLog("\r\n用户ID:" + teacher.YHZH + "\r\n用户名:" + teacher.XM + "\r\n客户机IP:" + Request.UserHostAddress + "\r\n错误地址:" + Request.Url + "\r\n异常信息:" + Server.GetLastError().Message, ex); } }
第六步:页面中使用
在try catch的catch中调用 loghelper类即可。
总结:
1.webconfig配置要灵活
2.不断调试、多点耐心
tks:
代码参考:http://www.cnblogs.com/ringwang/archive/2012/07/06/2579775.html
保存邮箱是、数据库:http://www.poluoluo.com/jzxy/201311/249970.html