问题 如何在ASP.NET 5.0中添加log4net(或任何其他第三方库)的配置


我正在阅读Scott Gu的博客 ASP.NET 5.0功能 并且博客中提到的新功能之一是使用json文件作为配置和消除Web.config文件。

关于这个功能我几乎没有问题。

假设我有以下log4net配置,以前添加到以前版本的ASP.NET中的Web.Config

配置文件

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="C:\\TestProj\\TestLog.txt" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
  </layout>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>

如何在config.json中添加部分?

如何转换xml以上并将其添加到config.json?

第三方库(在我的示例中为log4net)或库的用户是否必须添加某种类型的自定义转换API以支持基于json的配置,以便利用ASP.NET 5.0中提供的新配置功能?


2012
2018-03-04 03:47


起源



答案:


最近我遇到了同样的问题 log4net。我设法做到如下工作:

创建 log4net.xml 包含log4net配置部分的文件

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
...
</log4net>

您可以将该文件放在项目根文件夹中。

并在 Startup.Startup() 你可以配置的方法 log4net 提供xml作为配置:

public Startup(IApplicationEnvironment appEnv)
{
    // ... 

    XmlConfigurator.Configure(new FileInfo(Path.Combine(appEnv.ApplicationBasePath, "log4net.xml")));
}

我希望这有帮助。


10
2018-06-04 07:51



是的,您可能需要将其标记为输出文件,以便它包含在已发布的应用程序中。 - Rbjz


答案:


最近我遇到了同样的问题 log4net。我设法做到如下工作:

创建 log4net.xml 包含log4net配置部分的文件

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
...
</log4net>

您可以将该文件放在项目根文件夹中。

并在 Startup.Startup() 你可以配置的方法 log4net 提供xml作为配置:

public Startup(IApplicationEnvironment appEnv)
{
    // ... 

    XmlConfigurator.Configure(new FileInfo(Path.Combine(appEnv.ApplicationBasePath, "log4net.xml")));
}

我希望这有帮助。


10
2018-06-04 07:51



是的,您可能需要将其标记为输出文件,以便它包含在已发布的应用程序中。 - Rbjz


当前版本的log4net不支持Json项目,因此配置需要位于单独的xml文件中。


0
2018-03-05 00:47



您是否能够提供一个示例,说明该文件的放置位置,应该命名的内容,应该包含的内容以及如何将其添加到配置系统(在Startup.cs文件中)? - Matthew K