我在配置了log4net的程序上收到错误,但没有创建日志文件。我确定在程序中设置了日志记录,因为其他用户已使用相同的配置文件创建了相同的配置文件(文件路径除外)。我确信我对路径有写权限。在程序失败的时候,它绝对必须通过日志记录的初始化。
此配置文件中是否有任何错误,或者是否有任何人遇到过类似的问题,并且知道我应该在程序中查找我正在尝试获取日志的内容?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="AutoTag" type="System.Configuration.NameValueSectionHandler"/>
<section name="WindwardReports" type="System.Configuration.NameValueSectionHandler"/>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"/>
</configSections>
<AutoTag>
<add key="_debug" value="true"/>
</AutoTag>
<WindwardReports>
<add key="line.break" value="internal"/>
</WindwardReports>
<appSettings>
<add key="sql.timeout" value="240"/>
</appSettings>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\Users\loganm\Documents\Catapult.log"/>
<param name="AppendToFile" value="true"/>
<param name="MaxSizeRollBackups" value="2"/>
<param name="MaximumFileSize" value="100KB"/>
<param name="RollingStyle" value="Size"/>
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] ac.server %-5p %c - %m%n"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingFileAppender"/>
</root>
</log4net>
</configuration>
答案 0 :(得分:52)
在输入日志代码之前,在应用程序中提供以下代码:
log4net.Config.XmlConfigurator.Configure();
您可以在Global.asax中定义它:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
// Initialize log4net.
log4net.Config.XmlConfigurator.Configure();
}
您还可以根据Kevin建议添加以下行(或者提及您的配置文件名):
[assembly: log4net.Config.XmlConfigurator]
或
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]
希望它有所帮助!!!
答案 1 :(得分:10)
确保log4net.config文件,Copy to Output Directory属性不是&#34;不要复制&#34;。
实际上最好的解决方案是添加
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
跟踪背面的情况。它可以帮助您发现问题。
答案 2 :(得分:6)
以下是一些可以考虑的事项:
也许您使用的是与您的同事不同的log4net DLL版本?尝试从配置部分删除版本和公钥信息,即将其缩短为:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
尝试更改文件名以使用转义后的反斜杠,即&#34; C:\\ Users \\ loganm \ ...&#34;。或者,您可以尝试使用正斜杠:&#34; C:/ Users / loganm /..."
如果在运行程序之前重建程序,请确保您实际上使用的是与同事相同的AssemblyInfo.cs。一个常见的错误是忽略在那里初始化记录器。它应该在底部有这样的东西:
// Log4Net激活
[assembly:log4net.Config.XmlConfigurator]
答案 3 :(得分:0)
我也遇到了这个问题,这使我花了很多时间检查所有东西,最后在Google上进行的查询使我想起了我上次使用Log4Net时所采取的步骤:我必须将其添加到AssemblyInfo.cs文件中!疯!我在C#控制台应用程序中使用Log4Net,并且在app.config文件中使用Log4Net设置。
[程序集:log4net.Config.XmlConfigurator(Watch = true)]
答案 4 :(得分:0)
访问被拒绝可能是一个问题。例如:从测试项目运行会记录日志,但从Web应用程序运行不会
只需将其添加到配置
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
调试应用程序并查看标准输出。这将输出log4net调试信息(一旦发现问题就将其删除)
答案 5 :(得分:-2)
我发现了问题,遗憾的是,程序中实际上并没有设置日志记录,而且我收到的信息不正确。