我有一個使用log4net的WPF應用程序。當我在Visual Studio中運行它時,日誌文件按預期在Debug或Release文件夾中創建。當應用程序部署時log4net日誌文件未被寫入
但是,當我創建安裝程序並運行安裝的應用程序時,不會創建日誌文件。我在代碼中添加了以下幾行...
string logFilePath = ((Hierarchy)LogManager.GetRepository())
.Root.Appenders.OfType<FileAppender>()
.FirstOrDefault()?.File;
using (StreamWriter sw = new StreamWriter(@"d:\log.log")) {
sw.WriteLine("Log file: " + logFilePath);
}
...使我能夠檢查日誌文件是否正在寫入我期望的位置。它告訴我日誌文件應該寫入C:\Program Files (x86)\Physio Diary\PhysioDiaryClient.log
,這正是我所期望的。
但是,該文件不存在。任何想法爲什麼?
下面是App.config文件的頂部...
<?xml version="1.0"
encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>
<log4net>
<appender name="RollingFileAppender"
type="log4net.Appender.RollingFileAppender">
<param name="File"
value="PhysioDiaryClient.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-7level %logger - %message%newline%exception" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
文件的底部看起來像這樣...
<startup>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
之間的位都是做與應用程序使用的WCF服務。
任何任何想法?作爲一個測試,我嘗試在App.config中將日誌文件路徑硬編碼到我的D:驅動器(所以它是硬編碼的,並且不存在權限問題),但文件仍然存在沒有被創建。
您不應將%ProgramFiles%目錄配置爲日誌記錄目標,因爲通常而言,應用程序不允許寫入該目錄。 – dymanoid
@dymanoid理想情況下,我想將日誌文件寫入用戶本地文件夾中的客戶文件夾。任何想法我會怎麼做?不知道這是答案,因爲即使我硬編碼路徑到我的D:驅動器,我肯定有權限時,該文件不會被寫入。仍然值得首先確定位置,看看是否有幫助。謝謝 –