【问题标题】:log4net in WCF service hosted on a windows service托管在 Windows 服务上的 WCF 服务中的 log4net
【发布时间】:2013-04-25 07:56:05
【问题描述】:

我有一个托管在 Windows 服务上的 WCF 服务。

我应该把XmlConfigurator.Configure();放在哪里?

在其他应用中,我可以放在Application_Start()

我可以将它放在我的 Windows 服务的 OnStart() 方法中吗?然后我可以从我的 WCF 服务实例化记录器吗?

这就是我实例化记录器的方式:

private readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

这就是我的 Windows 服务中的内容

    protected override void OnStart(string[] args)
    {
        if (AgentServiceHost != null)
        {
            AgentServiceHost.Close();
        }

        AgentServiceHost = new ServiceHost(typeof(CustoemrService));
        AgentServiceHost.Open();
    }

【问题讨论】:

    标签: c# .net wcf service log4net


    【解决方案1】:

    只需将这段代码放入您的 AssemblyInfo.cs 文件中即可:

    [assembly: log4net.Config.XmlConfigurator(Watch=true)]
    

    http://logging.apache.org/log4net/release/manual/configuration.html

    【讨论】:

    • 对于我需要 log4net 的每个项目?即,如果我需要登录我的 WCF 服务项目和我的 Windows 服务项目,我必须将此行添加到两者?
    • 默认情况下,我的 WCF 服务或 Windows 服务项目中没有 AssemblyInfo.cs
    • 是的,AssemblyInfo.cs 位于解决方案资源管理器的“属性”节点下。默认情况下,Visual Studio 会在每个项目中创建此文件。这应该只包含在具有代码入口点的项目中,在这种情况下,同时包含在 WCF 服务和 Win 服务中
    • AssemblyInfo 仅为 winforms 应用程序创建
    • 不,你错了。 AssemblyInfo 在每个项目中默认创建。 postimg.org/image/pvdczfzcx 即便如此,也可以手动添加 ;-)
    猜你喜欢
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多