我在asp.net mvc应用程序的Web.config文件中输入了以下条目:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
...
</configSections>
<log4net>
<appender name="PublicAccessAppender" type="log4net.Appender.RollingFileAppender">
<datePattern value="'C:\Users\my_user_name\Documents\Temp\logs\public-access.'yyyy-MM-dd'.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="PublicAccessAppender" />
</root>
</log4net>
...
</configuration>
我希望我尝试实现的目标非常明确,但是当我运行应用程序(在IIS中托管)时,我没有得到任何日志文件。 FWIW,目录层次结构存在于Temp文件夹中,我喜欢log4net来生成路径中的其余目录/文件。
我已将log4net nuget软件包添加到我的应用程序中,并且我使用INFO级别进行日志记录。
我在这里缺少什么?
答案 0 :(得分:1)
我认为你无法完全进入datePattern
,必须只有YYYYmmdd
之类的东西。将文件路径放入file
元素:
<file value="C:\Users\my_user_name\Documents\Temp\logs\public-access.log" />
<datePattern value="yyyyMMdd" />
<preserveLogFileNameExtension value="true" />
最后一个元素强制将datePattern
放在.log
扩展名之前,这可能是您最初的目标。
答案 1 :(得分:0)
这是工作的appender配置:
<appender name="PublicAccessAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\temp\my_user_name\Documents\Temp\logs\app.log" />
<datePattern value=".yyyy-MM-dd" /><!-- can be omitted as it's the default datePattern value -->
<rollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
对于努力使用log4net配置的读者而言:在IIS中托管的asp.net几乎有0个写入权限,因此您最有可能遇到的问题是您的Web应用程序根本没有写入日志的权限文件。
这就是我发生的事情,我在调用log4net.LogManager.GetRepository().ConfigurationMessages
后检查调试器中.Configure()
的内容时注意到了这一点。
我跟着this post给了我的网络应用程序必要的权限以写入日志文件(即读/写/修改)。