在web及winform中配置log4net.dll和在windows服务中使用log4net.dll

在web及winform中配置log4net.dll:

1.需要在web.config中配置两段代码:

  

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
    <!-- System Trace-->
    <logger name="Info">
      <level value="INFO"/>
      <appender-ref ref="RollingInfo"/>
    </logger>
    <logger name="Error">
      <level value="ERROR"/>
      <appender-ref ref="RollingError"/>
    </logger>
    <logger name="Trace">
      <level value="INFO"/>
      <appender-ref ref="RollingTrace"/>
    </logger>
    <appender name="RollingInfo" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\Info\Info"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d[%p][%t]%c %m%n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO"/>
        <param name="LevelMax" value="INFO"/>
      </filter>
    </appender>
    <appender name="RollingError" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\Error\Error"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d[%p][%t]%c %m%n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR"/>
        <param name="LevelMax" value="ERROR"/>
      </filter>
    </appender>
    <appender name="RollingTrace" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\Trace\Trace"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d[%p][%t]%c %m%n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO"/>
        <param name="LevelMax" value="INFO"/>
      </filter>
    </appender>
    <!-- NHibernate trace -->
    <logger name="NHibernate" additivity="false">
      <level value="WARN"/>
      <appender-ref ref="RollingFile"/>
    </logger>
    <logger name="NHibernate.SQL" additivity="false">
      <level value="DEBUG"/>
      <appender-ref ref="RollingFile"/>
    </logger>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender,log4net">
      <file value="Logs\Debug\Debug"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout,log4net">
        <conversionPattern value="%d %p %m%n"/>
      </layout>
    </appender>
  </log4net>

在Global.asax中或者起始类或者配置中加入 log4net.Config.XmlConfigurator.Configure();

项目引用log4net.dll

2.在windows服务中使用log4net.dll

  配置此项和1差不多,但是需要在打开 properties/assemblyinfo.cs

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config", Watch = true)] 

config文件中的configSections属性也需要更改成

  <configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  </configSections>

在Global.asax中或者起始类或者配置中加入

 log4net.Config.XmlConfigurator.Configure();或

log4net.ILog logger = log4net.LogManager.GetLogger("MdaoToBeyondbitSMS");

选择始终复制;

3.下面是使用本次配置的类代码:使用类似于:

using System;
using System.Collections.Generic;
using System.Text;
using log4net;
using System.Diagnostics;
using System.Reflection;

namespace Utilities
{
    public class LogHelper
    {

        private static readonly ILog logInfo = LogManager.GetLogger("Info");

        private static readonly ILog logError = LogManager.GetLogger("Error");

        private static readonly ILog logTrace = LogManager.GetLogger("Trace");

        public static void info(string msg)
        {
            logInfo.Info(msg);
        }

        public static void error(string msg) {
            StackTrace stackTrace = new StackTrace();
            StackFrame stackFrame = stackTrace.GetFrame(1);
            MethodBase methodBase = stackFrame.GetMethod();
            logError.Error("类名:" + methodBase.ReflectedType.Name + " 方法名:" + methodBase.Name + " 信息:" + msg);
        }

        public static void trace(string msg)
        {
            logTrace.Info(msg);
        }
    }
}

 

posted on 2013-06-06 14:31  随∮缘  阅读(355)  评论(0编辑  收藏  举报

导航