2010-01-07 225 views
5

我正在使用log4net並完全使用param name =「File」value =「C:\ Application.log」進行設置。然而該文件不是在C:中創建的。我正在運行Windows 7,也許像權限是阻止文件被創建。未創建日誌文件?

這裏是在app.config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" /> 
    </configSections>` 

    <log4net> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="LogFileAppender" /> 
    </root> 
    <appender name="LogFileAppender「 type=「log4net.Appender.RollingFileAppender" > 
     <param name="File" value="C:\Users\Mohit\Documents\Application.log" /> 
     <param name="AppendToFile" value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern「 value=「%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" /> 
     </layout> 
    </appender> 
    </log4net> 
</configuration> 

回答

7

您必須提供一個真實的文件名。您在配置中定義的是文件夾名稱。相反的:

<param name="File" value="C:\Users\Mohit\Documents" /> 

使用類似:

<param name="File" value="C:\Users\Mohit\Documents\log.txt" /> 

此外,你可能需要爲你的應用程序日誌寫入根℃升溫權限:文件夾。 UAC不會讓你寫入根文件夾。

就像安迪說,你會是更好的選擇Windows用戶的一些文件夾的子文件夾,如:

c:\Users\Mohit\AppData\Local\<MyApplication> 

log4net的有你可以用它來針對特殊文件夾一些預定義變量。這裏有關於一些問題上的SO:

How to specify common application data folder for log4net?

C# how to specify the appData file path in the app.config file

1

呀,確保在執行應用程序的用戶有寫的權限,C :.

更好的是,您可能不想將您的應用程序日誌寫入根目錄c:\目錄。選擇安裝應用程序的位置或文檔和設置(或Windows 7等效)下的某個位置可能會更好。

+0

還要確保在記錄器上指定了appender。很容易錯過。如果您在VS下的調試模式下運行應用程序,則可以使用跟蹤appender,並且日誌輸出將顯示在「輸出」窗口中,如果Log4Net本身說了什麼,則非常有用。 – Skurmedel 2010-01-07 23:49:16

1

我的問題是在我的App.config文件節的順序。我有我的<startup>部分第一,然後我的<configSections>。出於某種原因,我的Windows應用程序中沒有出現錯誤,但它確實在控制檯應用程序中發生了錯誤。顯然<configSections>必須<configuration>

所以在第一個部分,而不是這樣的:

<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 

這樣做:

<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
0

什麼解決我的問題基本上是what CTBrewski posted here (+1 btw!),但我的App.config了appSettings條目不是configSections條目。

我感動與啓動項以上我log4net的配置項的appSettings項,然後將日誌寫入到用戶配置文件:

<configuration> 
    <appSettings> 
    <add key="log4net.Config" value="log4net.config" /> 
    <add key="log4net.Config.Watch" value="True" /> 
    <add key="ClientSettingsProvider.ServiceUri" value="" /> 
    </appSettings> 
    <startup> 
    <supportedRuntime version="v2.0.50727" /> 
    </startup> 
    ... 
    ... 

然後當然我的appender看起來是這樣的:

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <file value="${LOCALAPPDATA}/Synclio/Logs/SynclioWin.log" /> 
    <appendToFile value="true" /> 
    <maximumFileSize value="5000KB" /> 
    <maxSizeRollBackups value="2" /> 

    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%level %thread %logger - %message%newline" /> 
    </layout> 
    </appender> 
+0

不錯的編輯@Philipp,我不得不記得使用語言助手,因爲我喜歡語法着色。 – jmort253 2013-10-22 20:08:43