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
- Sep 01 Thu 2011 10:19
Log4Net - 動態設定儲存路徑
文章標籤
全站熱搜
留言列表