我正在使用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>
答案 0 :(得分:7)
您必须提供真实的文件名。您在配置中定义的是文件夹名称。而不是:
<param name="File" value="C:\Users\Mohit\Documents" />
使用类似的东西:
<param name="File" value="C:\Users\Mohit\Documents\log.txt" />
此外,您可能需要提升应用程序的权限才能将日志写入root c:文件夹。 UAC不会让您写入根文件夹。
Andy说,你最好选择一些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 :(得分:1)
是的,请确保正在执行该应用程序的用户具有对c:。
的写入权限更好的是,您可能不希望将应用程序日志写入根目录c:\目录。选择安装应用程序的位置或文档和设置(或Windows 7等效文件)下的某个位置可能会更好。
答案 2 :(得分: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>
答案 3 :(得分:0)
什么解决了我的问题基本上是what CTBrewski posted here (+1 btw!),但我的App.config有appSettings条目而不是configSections条目。
我在appSettings条目中移动了启动条目上方的log4net配置条目,然后将日志写入用户配置文件:
<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>