歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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");
}

Copyright © Linux教程網 All Rights Reserved