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

你可能感兴趣的:(Web)