• LogNet4学习笔记


    LogNet是一套开源的程序日志记录系统,经过配置后可以自动抓取程序中的错误、异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作,比如:通知某人右键、写入数据库等。

    这里写个AspNet应用LogNet的Demo:

    1.建立AspNet网站,在web.config中写LogNet的配置文件:

     1 <?xml version="1.0"?>
     2 <configuration>
     3     <configSections>
     4         <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
     5     </configSections>
     6   
     7     <log4net>
     8         <!--错误日志配置-->
     9         <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
    10             <param name="File" value="Log\LogError\"/>    <!--文件路径-->
    11             <param name="AppendToFile" value="true"/>
    12             <param name="MaxSizeRollBackups" value="100"/>
    13             <param name="MaxFileSize" value="10240"/>
    14             <param name="StaticLogFileName" value="false"/>
    15             <param name="DatePattern" value="yyyyMMdd"/>
    16             <param name="RollingStyle" value="Date"/>
    17             <layout type="log4net.Layout.PatternLayout">
    18                 <param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n "/>
    19             </layout>
    20         </appender>
    21         <!--信息日志配置-->
    22         <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
    23             <param name="File" value="Log\LogInfo\"/>     <!--文件路径-->
    24             <param name="AppendToFile" value="true"/>
    25             <param name="MaxFileSize" value="10240"/>
    26             <param name="MaxSizeRollBackups" value="100"/>
    27             <param name="StaticLogFileName" value="false"/>
    28             <param name="DatePattern" value="yyyyMMdd"/>
    29             <param name="RollingStyle" value="Date"/>
    30             <layout type="log4net.Layout.PatternLayout">
    31                 <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%x] %n%m %n"/>
    32             </layout>
    33         </appender>
    34         <!--控制台-->
    35         <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    36             <layout type="log4net.Layout.PatternLayout">
    37                 <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/>
    38             </layout>
    39         </appender>
    40         <!--log4net.LogManager.GetLogger("logerror")用这个来选择这种类型-->
    41         <logger name="logerror">
    42             <level value="ERROR"/>
    43             <appender-ref ref="ErrorAppender"/>
    44         </logger>
    45     <!--log4net.LogManager.GetLogger("loginfo")用这个来选择这种类型-->
    46         <logger name="loginfo">
    47             <level value="INFO"/>
    48             <appender-ref ref="InfoAppender"/>
    49         </logger>
    50         <root>
    51             <level value="INFO"/>
    52             <appender-ref ref="InfoAppender"/>
    53             <appender-ref ref="ConsoleAppender"/>
    54         </root>
    55     </log4net>
    56     <system.web>
    57         <compilation debug="true"/></system.web></configuration>
    View Code

    2.建立日志记录Log类库,实现方法

     1 /// <summary>   
     2     /// LogHelper的摘要说明。   
     3     /// </summary>   
     4     public class LogHelper
     5     {
     6         private LogHelper()
     7         {
     8         }
     9 
    10         public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");   //选择<logger name="loginfo">的配置 
    11 
    12         public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");   //选择<logger name="logerror">的配置 
    13 
    14 
    15         /// <summary>
    16         /// 默认配置。按配置文件
    17         /// </summary>
    18         public static void SetConfig()
    19         {
    20             log4net.Config.XmlConfigurator.Configure();
    21         }
    22 
    23         /// <summary>
    24         /// 手动设置,作用未知
    25         /// </summary>
    26         /// <param name="configFile"></param>
    27         public static void SetConfig(FileInfo configFile)
    28         {
    29             log4net.Config.XmlConfigurator.Configure(configFile);
    30         }
    31 
    32         /// <summary>
    33         /// 写信息。
    34         /// </summary>
    35         /// <param name="info"></param>
    36         public static void WriteLog(string info)
    37         {
    38             if (loginfo.IsInfoEnabled)
    39             {
    40                 loginfo.Info(info);
    41             }
    42         }
    43 
    44         /// <summary>
    45         /// 写日志。出错时会写入
    46         /// </summary>
    47         /// <param name="info"></param>
    48         /// <param name="se"></param>
    49         public static void WriteLog(string info, Exception se)
    50         {
    51             if (logerror.IsErrorEnabled)
    52             {
    53                 logerror.Error(info, se);
    54             }
    55         }
    56     }
    View Code

    3.在网站的Global.asax中配置网站与LogNet的联系。

     1 public class Global : System.Web.HttpApplication
     2     {
     3         void Application_End(object sender, EventArgs e)
     4         {
     5             //  在应用程序关闭时运行的代码
     6 
     7         }
     8 
     9         void Session_Start(object sender, EventArgs e)
    10         {
    11             // 在新会话启动时运行的代码
    12 
    13         }
    14 
    15         void Session_End(object sender, EventArgs e)
    16         {
    17             // 在会话结束时运行的代码。 
    18             // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
    19             // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
    20             // 或 SQLServer,则不会引发该事件。
    21 
    22         }
    23 
    24         /// <summary>
    25         /// 程序启动时配置lognet
    26         /// </summary>
    27         /// <param name="sender"></param>
    28         /// <param name="e"></param>
    29         protected void Application_Start(Object sender, EventArgs e)
    30         {
    31             //若不想把lognet配置文件写在web.config中,也可以另外手动指定。
    32             //XmlConfigurator.Configure(new FileInfo(HttpContext.Current.Server.MapPath("~/App_Data/log4net.config")));
    33         }
    34 
    35         /// <summary>
    36         /// 程序出错时通过lognet写日志
    37         /// </summary>
    38         /// <param name="sender"></param>
    39         /// <param name="e"></param>
    40         protected void Application_Error(Object sender, EventArgs e)
    41         {
    42             Exception objExp = HttpContext.Current.Server.GetLastError();
    43             LogHelper.WriteLog("
    客户机IP:" + Request.UserHostAddress 
    44                 + "
    错误地址:" + Request.Url 
    45                 + "
    异常信息:" + Server.GetLastError().Message, objExp);
    46         }
    47     }
    View Code

    这样,当网站出错时,就会自动在网站目录的LogLogError与LogInfo下写如文本日志。

  • 相关阅读:
    第十一周作业
    第十周作业
    第九周作业
    第六周&java实验报告四
    第五周课程总结&试验报告(三)
    第四周课程总结&试验报告(二)
    第二周学习总结
    第三周课程总结&实验报告一
    2019年春第四次课程设计报告
    2019年春第三次课程设计实验报告
  • 原文地址:https://www.cnblogs.com/nlh774/p/3623393.html
Copyright © 2020-2023  润新知