带有 .NET Core 应用程序的 Log4Net 配置

标签 log4net log4net-configuration

我需要在新的 .NET Core 应用程序上使用 log4net,该应用程序引用了一些刚刚编写的使用 log4net 的程序集。
我四处搜索,但所有的例子都只传递了一个 FileInfolog4net.Config.XmlConfigurator.Configure但使用最新版本需要第一个 ILoggerRepository repository 类型的参数

我应该通过什么?

我的代码是

   public static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json");

        var configuration = builder.Build();

        ContainerConfig.RegisterDependencies(configuration);
        MappingConfig.RegisterMapping();


        var fileInfo = new FileInfo(@"\config.log4net");

        log4net.Config.XmlConfigurator.Configure(null, fileInfo);



        var core = ContainerWrapper.Container.GetInstance<ICore>();

        core.StartAsync().Wait();

        Console.Write("Press a key to exit");
        Console.ReadLine();
    }

但与 null它崩溃了

有什么建议?

最佳答案

你可以得到默认的repository通过下面的声明,
并将其作为 Configure 的参数传递方法。

ILoggerRepository repository = log4net.LogManager.GetRepository(Assembly.GetCallingAssembly());

根据您的设置,您可能需要使用 Assembly.GetExecutingAssembly()反而。

关于带有 .NET Core 应用程序的 Log4Net 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50835087/

相关文章:

c# - 使用 Windows 安装程序部署我的项目时,log4net 不生成日志文件

xml - Log4net xml appender 不创建根元素

c# - 如何在 UWP 应用程序中通过 log4net 配置日志记录

log4net adonetAppender 不会将空值插入数据库

c# - 你如何通过 log4net 记录机器名称?

wcf - log4net 在 wcf PerSession 服务中使用 ThreadContext.Properties

log4net 日志文件未使用 Quartz.net + Common.Logging 写入

使用 Log4Net 格式化日期时间

c# - Log4Net 不写入 SQL 表

c# - 有损设置中充满时Log4net缓冲区不刷新