从另一个项目读取配置 - Log4Net ASP.NET Core 3.1

Read Config From Another Project - Log4Net ASP.NET Core 3.1

我正在尝试编写一个使用 log4net 的 class 库,它看起来像这样:

public class Logging
{
    private ILog log4netLogger = null;

    public Logging(Type type)
    {
        XmlDocument log4netConfig = new XmlDocument();
        log4netConfig.Load(File.OpenRead("log4net.config"));

        var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));

        XmlConfigurator.Configure(repo, log4netConfig["log4net"]);

        log4netLogger = LogManager.GetLogger(type);
    }

    public void Debug(string message)
    {
        log4netLogger(message);
    }

    public void Info(string message)
    {
        log4netLogger(message);
    }
}

但是,xml 配置在我 C:\....\TestLogging\TestLog4Net\bin\Debug\netcoreapp3.1 的测试控制台应用程序中。我实际上是从这个控制台应用程序开始测试 log4net 但我已将所有代码从 Program.csmain 方法移动到 Logging.cs 构造函数,但我认为 LogManager 现在将找不到这个。

这可能吗?

我觉得是可以的。要在 class 库中使用 log4net,您必须在 class 库中安装 log4net package,然后,您可以在控制台应用程序中添加 class 库引用和使用 class 库方法。但是,正如你所说,log4net.config 文件应该在控制台应用程序 netcoreapp3.1 文件夹中,否则,class 库将找不到 log4net.config 文件: