gpt4 book ai didi

c# - Log4net 没有正确加载配置

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:48 27 4
gpt4 key购买 nike

我有一个单独的类库,其中包含一个静态类,我在其中包装了 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: }

这个类的 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");

关于c# - Log4net 没有正确加载配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com