最近在弄使用Log4net记录日志。

将配置文件封装到的DLL中。

封装步骤:

1.将配置文件添加到类库中。

2.在配置文件上右键,选择属性。

3.

此时生成类库。DLL中就存在该配置文件啦。如图:

在类库中使用该配置文件:

      //获取配置文件全称
           string str = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Log4Net.config";
           //读取配置文件
           System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(str);
           log4net.Config.XmlConfigurator.Configure(stream);

附上使用Log4net全部代码

1.配置文件:Log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <logger name="ErrorLog">
      <level value="ERROR"></level>
      <appender-ref ref="ErrorLog"></appender-ref>
    </logger>
    
   

    <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="ErrorLog/" />
      <param name="AppendToFile" value="true" />
      <!--是否默认文件名-->
      <param name="StaticLogFileName" value="false" />
      <!--变换的形式为日期-->

      <rollingStyle value="Date" />

      <!--日期的格式,每天换一个文件记录-->

      <datePattern value="yyyyMMdd.TXT" />
      <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
      </layout>
    </appender>

    <logger name="InfoLog">
      <level value="INFO"></level>
      <appender-ref ref="InfoLog"></appender-ref>
    </logger>
    <appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="InfoLog\\" />
      <param name="AppendToFile" value="true" />
      <!--是否默认文件名-->
      <param name="StaticLogFileName" value="false" />
      <!--变换的形式为日期-->

      <rollingStyle value="Date" />

      <!--日期的格式,每天换一个文件记录-->

      <datePattern value="yyyyMMdd.TXT" />

      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
      </layout>
    </appender>


    <logger name="WarnLog">
      <level value="INFO"></level>
      <appender-ref ref="WarnLog"></appender-ref>
    </logger>
    <appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="WarnLog\\" />
      <param name="AppendToFile" value="true" />
      <!--是否默认文件名-->
      <param name="StaticLogFileName" value="false" />
      <!--变换的形式为日期-->

      <rollingStyle value="Date" />

      <!--日期的格式,每天换一个文件记录-->

      <datePattern value="yyyyMMdd.TXT" />

      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
      </layout>
    </appender>

    <logger name="FatalLog">
      <level value="Fatal"></level>
      <appender-ref ref="FatalLog"></appender-ref>
    </logger>
    <appender name="FatalLog" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="FatalLog\\" />
      <param name="AppendToFile" value="true" />
      <!--是否默认文件名-->
      <param name="StaticLogFileName" value="false" />
      <!--变换的形式为日期-->

      <rollingStyle value="Date" />

      <!--日期的格式,每天换一个文件记录-->

      <datePattern value="yyyyMMdd.TXT" />

      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
      </layout>
    </appender>
    
    
    
  </log4net>

</configuration>

2.日志帮助类:LogHelper

   public class LogHelper
    {
        public    static  LogHelper logHelper=new LogHelper();
       private  readonly static ILog _errorLog = LogManager.GetLogger("ErrorLog");
       private readonly static ILog _infoLog = LogManager.GetLogger("InfoLog");
       private readonly static ILog _warnLog = LogManager.GetLogger("WarnLog");
       private readonly static ILog _fatalLog = LogManager.GetLogger("FatalLog");
       private  LogHelper()
       {
           //获取配置文件全称
           string str = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Log4Net.config";
           //读取配置文件
           System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(str);
           log4net.Config.XmlConfigurator.Configure(stream);
       }

        /// <summary>
        /// 普通日志信息
        /// </summary>
        /// <param name="msg">日志内容</param>
        /// <param name="stackTrace">位置跟踪</param>
        public  void InfoLog(string msg, string stackTrace)
        { 
            Log(LogType.InfoLog, msg, stackTrace);
        }

        /// <summary>
        /// 警告级日志信息
        /// </summary>
        /// <param name="msg">日志内容</param>
        /// <param name="stackTrace">位置跟踪</param>
        public  void WarnLog(string msg, string stackTrace)
        {
            Log(LogType.WarnLog, msg, stackTrace);
        }

        /// <summary>
        /// Error级日志信息
        /// </summary>
        /// <param name="msg">日志内容</param>
        /// <param name="stackTrace">位置跟踪</param>
        public  void ErrorLog(string msg, string stackTrace)
        {
            Log(LogType.ErrorLog, msg, stackTrace);
        }
        /// <summary>
        /// 致命级日志信息
        /// </summary>
        /// <param name="msg">日志内容</param>
        /// <param name="stackTrace">位置跟踪</param>
        public  void FatalLog(string msg, string stackTrace)
        {

            Log(LogType.FatalLog, msg, stackTrace);
        }

        /// <summary>
        /// 记录日志通用方法 
        /// </summary>
        /// <param name="ltype">所添加日志类型,LogType枚举</param>
        /// <param name="logs">所添加的日志信息</param>
        public  void Log(LogType ltype, params string[] logs)
        {
            string msg = string.Join("\n", logs);
            switch (ltype)
            {
                case LogType.InfoLog: if (_infoLog.IsInfoEnabled) _infoLog.Fatal(msg);
                    break;
                case LogType.WarnLog: if (_warnLog.IsWarnEnabled) _warnLog.Fatal(msg);
                    break;
                case LogType.ErrorLog: if (_errorLog.IsErrorEnabled) _errorLog.Fatal(msg);
                    break;
                case LogType.FatalLog: if (_fatalLog.IsFatalEnabled) _fatalLog.Fatal(msg);
                    break;
            }
        }
    }

    public enum LogType
    {
        /// <summary>
        /// 普通日志
        /// </summary>
        InfoLog = 1,
        /// <summary>
        /// 警告级别日志
        /// </summary>
        WarnLog = 2,
        /// <summary>
        /// 错误级别日志
        /// </summary>
        ErrorLog = 4,
        /// <summary>
        /// 致命级别日志
        /// </summary>
        FatalLog = 8
    }

 

posted on 2015-05-06 15:01  mrma1989  阅读(992)  评论(0编辑  收藏  举报