log4net使用记录

1、在程序中引用log4net.dll

2、添加-新建配置文件Log4Net.config,并在文件属性中“复制到输出目录”选中“始终复制”,文件内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
  <!--Log日记配置-->
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  
  <log4net>
    <root></root>
    <!--程序中只实例化一个logger,名字为LogHelper-->
    <logger name ="LogHelper">
      <!--输出所有信息,这里只使用了Info和Error-->
      <level value="ALL"/>
      <!--两个介质名称,对应错误和信息-->
      <appender-ref ref="ErrorRollingFileAppender" />
      <appender-ref ref="InfoRollingFileAppender" />
    </logger>

    <!--Info介质设置-->
    <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置,Info和Error保存在不同的文件夹,方便理解-->
      <file value="Log\\Info\\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <!--样例:
        记录时间:2016-10-11 14:03:00,540 
        线程ID:[1] 
        日志级别:  ERROR   
        错误内容
        -->
        <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level  %n%m%n"/>
      </layout>
        <!--输出的等级 INFO-->
        <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="INFO" />
      </filter>
    </appender>


    <!--Error介质设置-->
    <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-->
      <file value="Log\\Error\\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <!--样例:
        记录时间:2016-10-11 13:59:00,560 
        线程ID:[1] 
        日志级别:  INFO   
        信息内容
        -->
        <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level  %n%m%n"/>
      </layout>
      <!--设置输出的等级 ERROR-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR" />
        <param name="LevelMax" value="ERROR" />
      </filter>
    </appender>
  </log4net>
</configuration>

3、在AssemblyInfo.cs中添加代码,用于调用Log4Net.config:

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

4、实现LogHelper,代码如下:

public class LogHelper
    {
        private static log4net.ILog log = log4net.LogManager.GetLogger("LogHelper");
        /// <summary>
        /// 整理异常信息
        /// </summary>
        /// <param name="error"></param>
        /// <returns></returns>
        private static string Msg(Exception error)
        {
            string str = "";
            if (error != null)
            {
                str = string.Format("异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
                     error.GetType().Name, error.Message, error.StackTrace);
            }
            return str;
        }
        /// <summary>
        /// 输出异常信息
        /// </summary>
        /// <param name="t"></param>
        /// <param name="ex"></param>
        public static void LogError(Exception ex)
        {
            log.Error(Msg(ex));
        }
        /// <summary>
        /// 输出日记信息
        /// </summary>
        /// <param name="str"></param>
        public static void LogInfo(string str)
        {
            log.Info(str);
        }
    }

 5、至此,可以在代码中方便地使用Log4Net记录信息

try
{
    throw new Exception("这是一个新异常");
}
catch(Exception ex)
{
    LogHelper.LogError(ex);
} 
finally
{
    LogHelper.LogInfo("这是Info");
}

 

posted @ 2016-10-11 16:37  Ziev  阅读(641)  评论(0编辑  收藏  举报