我在配置了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>
Run Code Online (Sandbox Code Playgroud)
Nar*_*ren 59
在放入日志记录代码之前,请在应用程序中提供以下代码:
log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)
您可以在Global.asax中定义它:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
// Initialize log4net.
log4net.Config.XmlConfigurator.Configure();
}
Run Code Online (Sandbox Code Playgroud)
您还可以像Kevin建议的那样添加以下行(或者提及您的配置文件名):
[assembly: log4net.Config.XmlConfigurator]
Run Code Online (Sandbox Code Playgroud)
要么
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!!!
小智 11
确保log4net.config文件,复制到输出目录属性不是"不要复制".
实际上最好的解决方案是添加
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
跟踪背面的情况.它将帮助您检测问题.
以下是一些可以考虑的事项:
也许你使用的是不同于同事的log4net DLL版本?尝试从配置部分删除版本和公钥信息,即将其缩短为:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
Run Code Online (Sandbox Code Playgroud)尝试更改文件名以使用转义的反斜杠,即"C:\\ Users \\ loganm\...".或者,您可以尝试使用正斜杠:"C:/ Users/loganm/..."
如果在运行程序之前重新构建程序,请确保您实际上使用的是与同事相同的AssemblyInfo.cs.一个常见的错误是忽略在那里初始化记录器.它应该在底部有这样的东西:
// Log4Net激活
[assembly:log4net.Config.XmlConfigurator]
小智 7
我也遇到了这个问题,令人惊讶的是我花了多少时间检查所有内容,最后在 Google 上的查询让我想起了上次使用 Log4Net 时采取的步骤:我必须将其添加到 AssemblyInfo.cs 文件中!疯狂的!我在 C# 控制台应用程序中使用 Log4Net,并在 app.config 文件中设置 Log4Net。
[程序集:log4net.Config.XmlConfigurator(Watch = true)]
| 归档时间: |
|
| 查看次数: |
38597 次 |
| 最近记录: |