2012-05-24 65 views
1

我正在使用Log4Net將日誌寫入日誌文件並將其存儲在本地臨時文件夾位置(C:\ temp ..)中。現在我想在運行時更改文本(日誌)文件名,所以我在配置文件以及我的應用程序中也做了一些代碼更改。但文件名不能在本地臨時文件夾中更改,並且日誌也沒有寫入文本文件。如何使用C#在運行時更改Log4net中的日誌文件名稱

你能請任何人告訴我解決這個問題或告訴我一些其他的例子來解決這個問題嗎?

這裏我的代碼是:

我的配置文件(Web.config)設置:

<appender name="RollingPatternFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="%property{LogFileName}.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="100MB" /> 
    <staticLogFileName value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} %-5level : [%logger] - %message %newline" /> 
    </layout> 
</appender> 
<logger name="SPM.SERVER"> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingPatternFileAppender" /> 
</logger> 

我的應用程序代碼是:

ILog logger = LogManager.GetLogger("SPM.SERVER"); 
log4net.ThreadContext.Properties["LogFileName"] = "MyLog"; 
logger.Debug("Load Data",ex); 
XmlConfigurator.Configure(); 

此代碼沒」 t在文件內寫入日誌,並且也不會更改文件名。任何人都請糾正我在這段代碼中做錯了什麼,或者告訴我一些其他的例子來實現這個解決方案。

+0

可能重複(http://stackoverflow.com/questions/2807334/configuring-log4net-appenders -via-xml-file-and-code) –

+0

@AndreasNiedermair:我無法打開該網站。 – SuryaKavitha

+0

你想改變文件名稱? Log4net非常靈活,你可以使用不同的appender。爲什麼你需要C#? – nunespascal

回答

2

log4net允許你有多個appender。您可以配置每個只偵聽特定的一組消息。

看看這個非常好的一套documentation。它有很多關於如何做事的例子。

這裏是一個相當粗糙的例子:[經由XML文件*和*代碼配置log4net的追加程序]的

<log4net> 
    <appender name="A1" type="log4net.Appender.RollingFileAppender"> 
    <file value="Errors" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Date" /> 
    <staticLogFileName value="false" /> 
    <param name="DatePattern" value="dd.MM.yyyy'.txt'" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
    </appender> 
    <appender name="A2" type="log4net.Appender.RollingFileAppender"> 
    <evaluator type="log4net.Core.LevelEvaluator"> 
     <threshold value="DEBUG"/> 
    </evaluator> 
    <filter type="log4net.Filter.StringMatchFilter"> 
     <stringToMatch value="Some special message" /> 
     <acceptOnMatch value="true" /> 
    </filter> 
    <filter type="log4net.Filter.DenyAllFilter" /> 
    <file value="Debug" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Date" /> 
    <staticLogFileName value="false" /> 
    <param name="DatePattern" value="dd.MM.yyyy'.txt'" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
    </appender> 
    <root> 
    <appender-ref ref="A1" /> 
    <appender-ref ref="A2" /> 
    </root> 
</log4net> 
+0

感謝您的代碼。我在我的配置設置上更改了代碼我如何繼續執行我的應用程序,以及如何在Web.config文件和我的應用程序上分配文件位置和文件名。你能告訴我關於它嗎? – SuryaKavitha

+1

文件屬性這樣做。 我已經使用了相對路徑,但您也可以使用絕對路徑。滾動文件appender根據您指定的模式添加文件名的其餘部分。 – nunespascal

相關問題