zoukankan      html  css  js  c++  java
  • log4net 日志配置及使用

    一、log4net按照不同的【LEVEL】级别输出到不同文件

    <log4net>
        <!--错误日志:::记录错误日志-->
        <!--按日期分割日志文件 一天一个-->
        <!-- appender 定义日志输出方式   将日志以回滚文件的形式写到文件中。-->
        <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
          <!--保存路径:下面路径项目启动的时候自动在C盘中创建log、logError文件-->
          <file value="C:\log\LogError\"/>
           <!-- 如果想在本项目中添加路径,那就直接去掉C:\  只设置log\LogError   项目启动中默认创建文件 -->
          <appendToFile value="true"/>
          <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
          <rollingStyle value="Date"/>
          <!--这是按日期产生文件夹-->
          <datePattern value="yyyy\yyyyMM\yyyyMMdd'.txt'"/>
          <!--是否只写到一个文件中-->
          <staticLogFileName value="false"/>
          <!--保留的log文件数量 超过此数量后 自动删除之前的   好像只有在 按Size分割时有效 设定值value="-1"为不限文件数-->
          <param name="MaxSizeRollBackups" value="100"/>
          <!--每个文件的大小。只在混合方式与文件大小方式下使用。超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->
          <maximumFileSize value="1GB" />
          <!-- layout 控制Appender的输出格式,也可以是xml  一个Appender只能是一个layout-->
          <layout type="log4net.Layout.PatternLayout">
            <!--每条日志末尾的文字说明-->
            <!--输出格式 模板-->
            <!-- <param name="ConversionPattern"  value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger   
            操作者ID:%property{Operator} 操作类型:%property{Action}%n  当前机器名:%property%n当前机器名及登录用户:%username %n  
            记录位置:%location%n 消息描述:%property{Message}%n   异常:%exception%n 消息:%message%newline%n%n" />-->
    
            <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
            <!--<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n错误描述:%message%newline %n"/>-->
            <conversionPattern value="%n==========
                                      %n【日志级别】%-5level
                                      %n【记录时间】%date
                                      %n【线程编号】[%thread]
                                      %n【执行时间】[%r]毫秒
                                      %n【出错文件】%F
                                      %n【出错行号】%L
                                      %n【出错的类】%logger 属性[%property{NDC}]
                                      %n【错误描述】%message
                                      %n【错误详情】%newline"/>
          </layout>
        </appender>
    
        <!--Error日志::: 错误日志-->
        <logger name="logerror">
          <level value="ERROR" />
          <appender-ref ref="ErrorAppender" />
        </logger>
      </log4net>
     

    最后别忘了Application_Start()  log4net.Config.XmlConfigurator.Configure();

    private static readonly log4net.ILog log =
                log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().ReflectedType);

    Log4net的安装

    Install-Package log4net

    1.先弄个日志记录的类

    /// <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);
                }
            }  
    }

    在 configSections 节点上添加:

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />     

     然后配置单独的节点:

    <!--日志-->  
      <log4net>
        <logger name="logerror">
          <level value="ERROR" />
          <appender-ref ref="ErrorAppender" />
        </logger>
        <logger name="loginfo">
          <level value="INFO" />
          <appender-ref ref="InfoAppender" />
        </logger>
        <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="E:xxx.comxx.xxx.comApp_LogErrorErrorLog.log" />
          <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="E:xxx.comxxx.xxx.comApp_LogInfoInfoLog.log" />
          <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>

    3.在GOLBAL文件里调用写日志:

     void Application_Start(object sender, EventArgs e) 
    
        {
            //在应用程序启动时运行的代码        
            //初始日志的配置
            LogHelper.SetConfig();        
        }
     
    
    void Application_Error(object sender, EventArgs e) 
        { 
            //在出现未处理的错误时运行的代码
            Exception objExp = HttpContext.Current.Server.GetLastError();
            string username = "";
            string userid = "";
            if (Session["ulogin"] != null)
            { 
                string[] uinfo=Session["ulogin"].ToString().Split('|');
                userid = uinfo[0];
                username = uinfo[1];
            }
            Aotain114.Public.LogHelper.WriteLog("
    用户ID:"+userid+"
    用户名:"+username+"
    客户机IP:" + Request.UserHostAddress + "
    错误地址:" + Request.Url + "
    异常信息:" + Server.GetLastError().Message, objExp);
            
        } 
  • 相关阅读:
    Redis使用:聚合类型为空时,会自动被Redis删除
    Effective C++: 04设计与声明
    select引起的服务端程序崩溃问题
    Effective C++: 03资源管理
    Effective C++: 02构造、析构、赋值运算
    Effective C++: 01让自己习惯C++
    Centos7.2 安装配置 Tengine(nginx)
    Centos7更新阿里yum源
    Go中函数作为值、类型传递。
    go实现冒泡排序和快速排序
  • 原文地址:https://www.cnblogs.com/xdot/p/5249489.html
Copyright © 2011-2022 走看看