.net标准1.3项目中的log4net配置

时间:2018-11-27 13:11:13

标签: c# log4net .net-standard

我试图将c#项目从.net Framework v4.6迁移到.net标准。 该项目具有log4net v2.0.8依赖性。

我发现了这个SO anwser,它建议使用.net标准1.3并引用this post以获得更详细的解决方案。

使用XmlConfigurator.Configure方法配置log4net时出现问题,该方法要求将ILoggerRepository作为第一个参数。

在所使用的帖子LogManager.GetRepository(Assembly.GetEntryAssembly())方法中,但.net标准1.3中Assembly.GetEntryAssembly()not supported

Official documentation也已损坏,因为XmlConfigurator.Configure方法签名及其示例用法不匹配。

那么,如何在.net标准1.3项目中配置log4net?

1 个答案:

答案 0 :(得分:5)

在您的.NET Standard 1.3类库项目中,在方法的签名中提供一个Assembly参数,以照顾Log4net的配置,例如:

public static void Configure(Assembly assembly)
{
    ILoggerRepository repository = LogManager.GetRepository(assembly);
    XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));

    // ...
}

在完整的.NET Framework或.NET Core中开发的实际应用程序中调用此方法,并通过例如Assembly传入此Assembly.GetEntryAssembly()参数。

完整的.NET Framework和.NET Core均支持

Assembly.GetEntryAssembly()