zoukankan      html  css  js  c++  java
  • Web 应用配置Log4Net

    1.第一步:在web.config文件添加如下代码:

    [sourcecode language="csharp"]
    <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>
    <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="TestLog.txt"/>
    <appendToFile value="true"/>
    <rollingStyle value="Composite"/>
    <datePattern value="yyyyMMdd"/>
    <maxSizeRollBackups value="10"/>
    <maximumFileSize value="10MB"/>
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c:%L] - %m%n"/>
    </layout>
    </appender>
    <root>
    <level value="DEBUG"/>
    <appender-ref ref="RollingLogFileAppender"/>
    </root>
    </log4net>
    [/sourcecode]

    第二步:添加Log4Net引用

    log4net.dll

    第三步:在global.asax 文件中添加命名空间

    [sourcecode language="csharp"]
    using log4net;
    using log4net.Config;
    using log4net.Repository;
    using log4net.Repository.Hierarchy;
    [/sourcecode]

    在 Application_Start 方法下添加

    [sourcecode language="csharp"]
    protected void Application_Start(object sender, EventArgs e)
    {
    XmlConfigurator.Configure();
    }
    [/sourcecode]

    第四步 :添加Logger 类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Phone.BLL
    {
        public class LogHelper
        {
            public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
            public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
           
            public static void WriteLog(string info)
            {
                if(loginfo.IsInfoEnabled)
                {
                    loginfo.Info(info);
                }
            }
            public static void WriteLog(Exception se)
            {
                if(logerror.IsErrorEnabled)
                {
                    logerror.Error(se);
                }
            }
    
            public static void WriteLog(string info,Exception se)
            {
                if(logerror.IsErrorEnabled)
                {
                    logerror.Error(info, se);
                }
            }
        }
    }

    第五不: 捕获异常

            catch (Exception ex)
                {
                    LogHelper.WriteLog(ex);
                    return Ok(new WebResult(2));
                }

    log4net 常用参数:

    %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
    %n(new line):换行
    %d(datetime):输出当前语句运行的时刻
    %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
    %t(thread id):当前语句所在的线程ID
    %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
    %c(class):当前日志对象的名称,例如:
    %f(file):输出语句所在的文件名。
    %l(line):输出语句所在的行号。
    %数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。

    FAQ:

    1.控制日志文件大小的问题

    对于一个长时间使用并且有大量业务日志的系统来说,如果使用FileAppender将日志一直记录到一个文件中会引起性能低下的问题,我曾见过有个系统的日志文件达到了800多M,最后系统无法及时响应了,在这种情况下可考虑使用RollingFileAppender循环记录日志,一种是指定文件的最大长度,如果超过了就重新生成一个文件,如下面的配置:

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
      <file value="RollingFileAppender_log.txt" /> 
      <appendToFile value="true" /> 
      <rollingStyle value="Size" /> 
      <maxSizeRollBackups value="10" /> 
      <maximumFileSize value="100KB" /> 
      <staticLogFileName value="true" /> 
      <layout type="log4net.Layout.PatternLayout"> 
        <conversionPattern value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline" /> 
      </layout> 
    </appender> 
    在上面的配置中,每个日志文件最大100KB,最大日志文件个数是10生成的日志文件名会是RollingFileAppender_log.txt.1, RollingFileAppender_log.txt.2 ... RollingFileAppender_log.txt.10,如果记录的日志超过10个,会从RollingFileAppender_log.txt.1开始覆盖。
    还有一种方式就是按照日期记录日志,它的配置如下:
    <appender name="RollingLogFileAppender_DateFormat" type="log4net.Appender.RollingFileAppender"> 
      <file value="RollingLogFileAppender_DateFormat_log.txt" /> 
      <appendToFile value="true" /> 
      <rollingStyle value="Date" /> 
      <!--<datePattern value="yyyyMMdd-HHmm" />--> 
      <datePattern value="yyyyMMdd" /> 
      <layout type="log4net.Layout.PatternLayout"> 
        <conversionPattern value="%date [%thread](%file:%line) %-5level %logger [%property{NDC}] - %message%newline" /> 
      </layout> 
    </appender> 

    后记:

    如果想暂停Log4Net日志功能,在webconfig添加如下代码即可

    [sourcecode language="csharp"]
    <log4net></pre>
    <log4net threshold="OFF" />
    <appender>.....
    [/sourcecode]
    [/sourcecode]Let me know if you face any further issue on this.

     Log4Net  SDK

  • 相关阅读:
    SharedPreferences数据、openFileOutput文件、SQLite数据库文件存储位置
    Android Activity 生命周期的透彻理解
    Android中半透明Activity效果另法
    android开发3:四大基本组件的介绍与生命周期
    Activity生命周期的学习以及Logcat的使用
    Android 之 Window、WindowManager 与窗口管理
    Android相关类关系
    android应用开发之Window,View和WindowManager .
    Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
    Android应用程序窗口(Activity)的窗口对象(Window) 的创建过程分析
  • 原文地址:https://www.cnblogs.com/code-charmer/p/4630625.html
Copyright © 2011-2022 走看看