如何为 C# Windows 服务配置 log4net

2024-01-22

我有一个 Windows 服务,其中 app.config 文件和 log4net.config 文件是分开的。日志记录不起作用。

在我的 app.config 文件中,我有以下部分:

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

如果我在值中指定 log4net.config 文件的绝对路径,则此方法有效。

我需要提供 log4net.cong 的绝对路径吗? log4net.config 和 app.config 文件与可执行文件位于同一文件夹中。

有任何想法吗?

Parag


也许这会有所帮助([使用 ASP.NET 2.0 网站将 Log4Net 配置移出 web.config][1]。)。

以下是您可能感兴趣的部分:

告诉应用程序进行配置 log4net 使用此配置文件。那里 这确实有两个地方。第一的, global.asax 和第二个 assemblyInfo.cs 文件。请注意,大多数 你将开始的时间 包含所有代码的 global.asax 文件 排队。无论出于什么原因,唯一 我可以让它发挥作用的方法是 打破 global.asax 来使用 代码隐藏,然后ass assemblyInfo.cs 文件。所以最终结果是 看起来像这样。

全局.asax: global.asax.cs(在您的 App_Code 文件夹中):

using System;
using System.Web;

public class GlobalAsax : HttpApplication
{
    // you may have lots of other code here
    void Application_Start(object sender, EventArgs e)
    {
        log4net.Config.XmlConfigurator.Configure();
    }
}

现在您已经有了申请 调用 log4net 的配置,你 可以在程序集中设置属性 信息以便 log4net 知道去哪里 查找配置文件。AssemblyInfo.cs(在你的App_Code文件夹):

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

watch 标志告诉 log4net 保持

关注配置文件 潜在的变化。这很有帮助,如果 你想改变配置 从记录所有内容到仅记录错误 在测试过程中。

为了确保log4net.config总是在那里,将 log4net.config 添加到 csproject 中,并将其设置为CopyAlways。它应该出现在调试文件夹中。

您可以使用脚本将所有内容复制到发布文件夹,或者如果您使用的是 MS 安装项目,请手动将该文件添加到项目中。然后将添加参考。 [1]:https://web.archive.org/web/20160928002238/http://geekswithblogs.net:80/bsherwin/archive/2008/02/15/119657.aspx https://web.archive.org/web/20160928002238/http://geekswithblogs.net:80/bsherwin/archive/2008/02/15/119657.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 C# Windows 服务配置 log4net 的相关文章

随机推荐