1、先download一下log4net元件, 然後reference一下log4net的元件

2、接下來有一些部分是需要設定的
→ goble.asax
→ log4netpath.xml (log4net配置檔案)
log4net有兩種載入方式
→外部檔案載入
→修改web.config

A、外部載入log4netpath.xml的檔案內容如下
<log4net>
  <!--logger 可以設定多個, 那只是一個對於紀錄器的接口-->
  <logger name="AppLogger">
    <level value="ALL" />
    <appender-ref ref="RollingLogFileAppender" />
    <appender-ref ref="ConsoleAppender" />
  </logger>
 
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log/logfile1.log" />
    <maxSizeRollBackups value="10"/>
    <maximumFileSize value="512MB"/>
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <StaticLogFileNames value ="true"/>
    <datePattern value="yyyyMMdd" />
    <encoding value="utf-8"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="[%F][%l][%d]%m%n" />
    </layout>
  </appender>
   
</log4net>

並在goble.asax的application_start寫入<goble.asax在此就不多作介紹了>
  void Application_Start(object sender, EventArgs e)
    {
        log4net.Config.XmlConfigurator.ConfigureAndWatch (new System.IO.FileInfo(Server.MapPath ("~/Log4NetConfig.xml")));
        //透過外部載入的方式載入log4net的設定檔案
    }

B、修改web.config的檔案<參照官方文件>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <log4net>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
            </layout>
        </appender>
        <root>
            <level value="INFO" />
            <appender-ref ref="ConsoleAppender" />
        </root>
    </log4net>
</configuration>
p.s.關於log4net紀錄format的設定在 conversionPattern value ="在此設定你要的log內容"



4、在.net中撰寫檔案儲存的路徑設定<log4net的紀錄器>

//傳入值:fileName→儲存log的路徑;Message→所要記錄的Log
    public void Changelog4netLogPath(String fileName,  String Message)
    {

        log4net.ILog iLogC = LogManager.GetLogger("AppLogger"); //設定一個Log4net的紀錄器
        log4net.Core.LogImpl logimpl = iLogC as log4net.Core.LogImpl; //抓取Log4net的web.conifg設定檔
        if (logimpl != null) //先判別是否有抓到其設定文件
        {
            log4net.Appender.AppenderCollection ac = ((log4net.Repository.Hierarchy.Logger)logimpl.Logger).Appenders;
            //將設定文件內的設定收集起來並打包成一個collection
             for (int i= 0;i<ac.Count ;i++)
             {
                 log4net.Appender.RollingFileAppender rfa = ac[i] as log4net.Appender.RollingFileAppender;
            //log4net.Appender.FileAppender rfa = ac[i] as log4net.Appender.FileAppender;
                 if (rfa!=null)
                 {
                     rfa.File = fileName; //重新設定儲存路徑的元素
                    StreamWriter aa = new StreamWriter(rfa.File, rfa.AppendToFile, rfa.Encoding);
                    //rfa.Writer = new System.IO.StreamWriter(rfa.File, rfa.AppendToFile, rfa.Encoding);
                    rfa.Writer = aa ;//重新寫入設定
                    iLogC.Info(Message.ToString());//寫入log
                    aa.Close();
                 }
                          
             }
         }
        
        
    }


相關參考網站:
http://www.cnblogs.com/haptear/archive/2006/06/21/log4netchanglogfilename.html
http://dragon.cnblogs.com/archive/2005/03/24/124254.html
http://logging.apache.org/log4net/index.html


arrow
arrow
    文章標籤
    log4net vs2008 dotnet
    全站熱搜

    斷了線的小木偶 發表在 痞客邦 留言(0) 人氣()