2010-08-25 61 views
23

我有两个项目配置相同的log4net。一个项目记录良好;但是,另一个根本不记录。log4net将不会读取从app.config

在不登录的回报IsFatalEnabled = falseIsErrorEnabled = falseIsWarnEnabled = falseIsInforEnabled = falseIsDebugEnabled = false该项目Logger

我已经从一个项目复制并粘贴到另一个项目,完全替换了该文件并尝试删除所有空格。

什么可能导致一个项目不能正确地从app.config中读取正确的级别?

的app.config:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="logfile.txt" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date: %-5level – %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
    </log4net> 
</configuration> 

Program.cs的

using log4net; 

class Program 
{ 
    private static readonly ILog Log = LogManager.GetLogger("SO"); 

    static void Main(string[] args) 
    { 
     Log.Info("SO starting"); 
    } 
} 

回答

40

看来,app.config文件没有配置为通过log4net的观看。

添加以下行AssemblyInfo.cs和记录已经被激活:

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

奇怪,因为我没有这个行添加到这是工作的项目。

编辑:

看起来这是工作确实有行之后的所有项目。我一定忘记了。

// This will cause log4net to look for a configuration file 
// called [ThisApp].exe.config in the application base 
// directory (i.e. the directory containing [ThisApp].exe) 
// The config file will be watched for changes. 
[assembly: log4net.Config.XmlConfigurator(Watch = true)] 
+2

我的情况大致相同 - 我复制一个项目到另一个项目,但“包装”中的自定义组件的log4net我效用码 - 虽然魔线你提到的是在新项目中,它是从失踪我的自定义程序集的AssemblyInfo.cs(我的印象是所有配置都必须在包含入口点的程序集中完成 - 错误) – 2012-04-19 14:15:32

+2

我必须为VB.NET应用程序执行此操作...语法: 2013-01-16 21:31:16