c# - 在 ASP.NET 中包含 log4Net 外部配置文件的最佳实践

标签 c# asp.net log4net

我见过至少两种在 ASP.NET web 应用程序中包含外部 log4net 配置文件的方法:

在您的 AssemblyInfo.cs 文件中具有以下属性:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log.config", Watch = true)]

调用 Global.asax.cs 中的 XmlConfigurator:

protected void Application_Start()
{
    XmlConfigurator.Configure(new FileInfo("Log.config"));
}

这样做的最佳做法是什么?

最佳答案

启动时调用:

XmlConfigurator.Configure();

在您的 Web.config 中,在 appSettings 中指定 log4net.Config:

<add key="log4net.Config" value="Log.config" />

此特殊设置允许您更改日志配置而无需重新编译。特别有助于在多个环境之间移动。

示例

考虑以下项目文件结构:

\config\log4net\debug.config
\config\log4net\staging.config
\config\log4net\release.config
\config\appSettings\debug.config
\config\appSettings\staging.config
\config\appSettings\release.config

应用程序和日志记录配置因环境而异。在应用程序设置中维护对日志记录配置的引用。

\config\appSettings\debug.config:

<appSettings>
    <add key="log4net.Config" value="config\log4net\debug.config" />
    ...
</appSettings>

\config\appSettings\staging.config:

<appSettings>
    <add key="log4net.Config" value="config\log4net\staging.config" />
    ...
</appSettings>

\config\appSettings\release.config:

<appSettings>
    <add key="log4net.Config" value="config\log4net\release.config" />
    ...
</appSettings>

更改环境只需更新 Web.config 中的 appSettings 文件即可。

<appSettings file="config\appSettings\staging.config">
    ...
</appSettings>

关于c# - 在 ASP.NET 中包含 log4Net 外部配置文件的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1731513/

相关文章:

c# - 设置 Log4Net 以记录类库的输出

log4net 不会从 app.config 读取

c# - 通过更新面板更新时,在我的页面上出现两次

javascript - 如何在母版页弹出窗口中的向导中从用户控件获取 ControlToValidate ID - javascript asp.net 验证

c# - 为什么 ListView 会触发事件,指示添加后未选中选中的项目

c# - 选中和取消选中动态复选框列表

ASP.NET Razor Html.TextArea

logging - Log4Net 多个 Appender,多个表存在配置问题

c# - WPF 中的自定义设计时可见性属性

c# - 自动对焦例程检测非常小的模糊差异