Log4net没有正确加载配置

时间:2016-03-31 16:07:11

标签: c# asp.net-mvc log4net log4net-configuration

我有一个单独的类库,其中包含一个静态类,其中包含了Log4Net的使用。 这样的事情(见下文)。

    public static class Logger
    {
        private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        static Logger()
        {

            log4net.Config.XmlConfigurator.Configure();
            log = log4net.LogManager.GetLogger(typeof(Logger));
            log.Logger.IsEnabledFor(log4net.Core.Level.All);
        }

        public static void Error(object msg)
        {
            log.Error(msg);
        }

        public static void Error(object msg, Exception ex)
        {
            log.Error(msg, ex);
        }
}

我无法记录任何内容。当我进入代码时,我会看到一些对象上的消息,例如ConfigurationMessage:

  

{log4net:错误XmlConfigurator:无法找到配置部分   ' log4net的'在应用程序的.config文件中。检查.config文件   对于和元素。配置   部分看起来应该像:}

这个类的assemblyinfo.cs,我添加了这个

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

所以,显然,它无法找到这个文件?该程序集正在从ASP.Net MVC Web应用程序中使用,并且在编译时,log4net.config被复制到/ bin文件夹中,所以它在那里,但它无法找到?

1 个答案:

答案 0 :(得分:1)

程序集属性配置与Web应用程序不能很好地协作,尤其是当主程序集中的程序集属性不存在时。

而是使用引用文件本身的XmlConfigurator.Configure重载:

// or wherever your file is
var fileInfo = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config"); 
if (fileInfo.Exists)
    log4net.Config.XmlConfigurator.Configure(fileInfo);
else 
    throw new InvalidOperationException("No log config file found");