Log4net 没有正确加载配置

Log4net not loading config properly

我有一个单独的 class 库,其中包含一个静态 class,其中我包装了 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:ERROR XmlConfigurator: Failed to find configuration section 'log4net' in the application's .config file. Check your .config file for the and elements. The configuration section should look like: }

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

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

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

程序集属性配置不能很好地与 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");