跨多个项目共享 log4net 配置

Dha*_*777 3 asp.net-mvc wcf log4net

在我的 WCF 解决方案中,我在此解决方案下有多个项目 (16)。(业务对象、业务层、Windows 服务等)

我需要将 log4net 日志记录框架集成到所有项目中。在所有项目中共享一个 log4net 配置文件的最佳方法是什么。

mat*_*tth 5

如果您只有一个运行的启动项目(例如,其中只有一个是 MVC 项目,其余都是简单的库),则您只需要在 MVC 项目中有配置。在每个库中,您仍然可以使用 MVC 项目的配置。

但是,如果您有多个启动项目,则可以配置 log4net 以查看 app.config 之外的单独共享配置文件。例子:

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date{hh:mm:ss tt} %level&gt; %message%newline"/>
    </layout>
  </appender>
  <root>
    <level value="DEBUG"/>
    <appender-ref ref="ConsoleAppender"/>
  </root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

在项目中:

log4net.Config.XmlConfigurator.Configure(new FileInfo(@"C:\test\common.config"));
Run Code Online (Sandbox Code Playgroud)

您也可以包含应用程序设置,因此这不是特定于编译的:

<appSettings>
  <add key="lo4gnet.Config" value="C:\test\common.config"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

在代码中配置:

log4net.Config.XmlConfigurator.Configure(new FileInfo(ConfigurationManager.AppSettings["lo4gnet.Config"]));
Run Code Online (Sandbox Code Playgroud)


Kha*_*meh 5

Visual Studio 允许您将文件从解决方案级别链接到项目级别。我会在路径上使用这种方法而不是硬编码的方法。

Add > Existing Item > Add As Link
Run Code Online (Sandbox Code Playgroud)

为清楚起见,请参阅图像。

添加为链接