2009-06-08 72 views
15

我使用log4net的,我是到日誌文件保存在勝利的應用程序數據文件XP/Vista的等C#如何指定應用程序數據文件路徑app.config文件中

這是我的app.config文件到目前爲止,我已經指定了名稱softphone.log。 Hoewver,我不確定如何指定文件的完整路徑,因爲根據用戶名,每個用戶都有不同的路徑。

<log4net> 
    <logger name="default"> 
     <level value="DEBUG"/> 
    </logger> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="softphone.log"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Size"/> 
     <maxSizeRollBackup value="10"/> 
     <maximumFileSize value="1MB"/> 
     <staticLogFileName value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
     </layout> 
    </appender> 
    </log4net> 

在我的源代碼,我可以通過以下操作獲取路徑:

System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

但是,我不能用上面我的app.config,如果我硬編碼的路徑我的系統的路徑是:

C:\Documents and Settings\John\Application Data 

但是,這對每個客戶端都會有所不同。那麼有沒有辦法做到這一點的app.config文件?

非常感謝您的任何建議,

+0

可能重複的[如何爲log4net指定常見應用程序數據文件夾?](http://stackoverflow.com/questions/468989/how-to-specify-common-application-data-folder-for-log4net) – 2011-06-16 03:47:08

回答

17

我不相信你可以做你想做的,有一個app.config文件的自定義分析區域的方法,讓你可以添加自己的令牌你可以用正確的值替換,但是我看不到在log4net部分內部是如何工作的。

但是,在config中爲log4net設置的所有內容也可以在代碼中設置。我認爲你最好的選擇是在應用程序啓動後在代碼中爲appender設置屬性。


啊,不要緊,快速搜索已經揭示了我的無知。從herehere出現類似這樣的東西:

<file value="${APPDATA}\log-file.txt" /> 

會做你想要什麼。我沒有親自測試過,所以我也會留下我的第一個答案 - 但我很想知道你是否有幸運。

+1

很高興你編輯;)總是有辦法以某種方式獲取環境變量。 – 2009-06-08 10:34:05

相關問題