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

发布于 2024-08-11 06:43:33 字数 392 浏览 6 评论 0原文

我至少看到了两种在 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"));
}

最佳实践是什么去做吗?

I have seen at least two ways to include an external log4net config file in an ASP.NET web application:

Having the following attribute in your AssemblyInfo.cs file:

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

Calling the XmlConfigurator in the Global.asax.cs:

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

What would be the best practice to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

弱骨蛰伏 2024-08-18 06:43:33

启动时,调用:

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>

At startup, call:

XmlConfigurator.Configure();

In your Web.config, specify log4net.Config in appSettings:

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

This special setting allows you to change the log configuration without having to recompile. Especially helpful for moving between multiple environments.

Example

Consider the following project file structure:

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

Application and logging configurations are distinguished for each environment. References to the logging configurations are maintained in the application settings.

\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>

Changing environments is a simple matter of updating the appSettings file in Web.config.

<appSettings file="config\appSettings\staging.config">
    ...
</appSettings>
白芷 2024-08-18 06:43:33

我对“神奇”的配置方法不满意,因为我想在带有环境变量(%PUBLIC%\MyApp\MySettings.config)的路径中指定我的配置。

因此,我在 app.config 中添加了以下内容:

<add key="MyLog4NetConfigFile" value="%PUBLIC%\MyApp\MySettings.config"/>

并执行此操作来设置我的 log4net 配置:

var configFile = ConfigurationManager.AppSettings.Get("MyLog4NetConfigFile");
if( !string.IsNullOrEmpty(configFile))
{
    configFile = Environment.ExpandEnvironmentVariables(configFile);
    XmlConfigurator.Configure(new FileInfo(configFile));
}

I was dissatisfied with the "magic" configuration approach, because I wanted to specify my configuration in a path with an environment variable (%PUBLIC%\MyApp\MySettings.config).

So instead, I have this in my app.config:

<add key="MyLog4NetConfigFile" value="%PUBLIC%\MyApp\MySettings.config"/>

And do this to set my log4net configuration:

var configFile = ConfigurationManager.AppSettings.Get("MyLog4NetConfigFile");
if( !string.IsNullOrEmpty(configFile))
{
    configFile = Environment.ExpandEnvironmentVariables(configFile);
    XmlConfigurator.Configure(new FileInfo(configFile));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文