[memo] Log4net (Windows form)

摘要:[memo] Log4net (Windows form)

Log4net 這個工具不管是在Java或.net陣營,都是很紅的Log工具。

其中我覺得最麻煩的就是配置檔,如果設定有錯誤,幾乎沒甚麼錯誤訊息可以參考。

一、配置檔設定內容如下:


<log4net>
        <appender name="A1" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date %-5level %logger - %message%newline" />
            </layout>
        </appender>
        <appender name="A2" type="log4net.Appender.RollingFileAppender">
            <file value="E:/log@"/>
            <staticLogFileName value="false"/>
            <appendToFile value="true"/>
            <rollingStyle value="Date"/>
            <datePattern value="yyyy-MM-dd.lo\g"/>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date %level %message%newline"/>
            </layout>
        </appender>
        <appender name="A3" type="log4net.Appender.RollingFileAppender">
            <file value="E:/logError@"/>
            <staticLogFileName value="false"/>
            <appendToFile value="true"/>
            <rollingStyle value="Date"/>
            <datePattern value="yyyy-MM-dd.lo\g"/>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date %-5level %logger - %message%newline"/>
            </layout>
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="ERROR" />
                <param name="LevelMax" value="ERROR" />
            </filter>
        </appender>
        
        <root>                   
            <level value="ALL"/>
            <appender-ref ref="A2"/>
            <appender-ref ref="A1"/>
            <appender-ref ref="A3"/>
        </root>        
</log4net>

說明:

  1. 會將所有訊息輸出到A1、A2,其中A1為console模式。
  2. 而A3只會包含ERROR 層級以上的Log資料。

二、Log4net wrap

因為還有其他專案要用,所以就簡單包裝一下,以下為包裝的code。


using System;
using System.Collections.Generic;
using System.Text;
using log4net;
using log4net.Config;

namespace LogUtility
{
    public class LogHelper
    {
        private static readonly ILog logger = LogManager.GetLogger(typeof(LogHelper));

        public static void Error(Exception ex)
        {
            logger.Error(ex);
        }

        public static void Error(string message, Exception ex)
        {
            logger.Error(message, ex);
        }

        public static void Info(string message)
        {            
            logger.Info(message);
        }

        public static void Debug(Exception ex)
        {         
            logger.Debug(ex);
        }

        public static void Warn(Exception ex)
        {
            logger.Warn(ex);
        }

        /// 
        /// 初始化 log4net 設定檔位置
        /// 
        /// firePath 例如:d:/config.xml
        /// 
        public static void InitConfig(string filePath)
        {            
            XmlConfigurator.Configure(new System.IO.FileInfo(filePath));
        }
    }
}

三、使用方式如下:


//設定Log組態檔位置
LogHelper.InitConfig(AppDomain.CurrentDomain.BaseDirectory+"logConfig.xml");

//記錄Log
LogHelper.Info("填寫你想記錄的資訊");     

四、參考範例網站

  • http://hi.baidu.com/itpangdun/blog/item/5ef055117dd118fac2ce7922.html
  • http://www.cnblogs.com/fuxuan1982929/articles/725047.html