使用PostSharp,Log4Net和Unity包含其他属性

时间:2015-06-15 13:34:51

标签: c# wcf log4net unity-container postsharp

我有一个WCF应用程序,它使用Unity(3.5.1404)通过Unity.Wcf(3.5.1404)和PostSharp.Patterns.Diagnostics.Log4Net(4.1.14)与Log4Net(2.0.3)进行日志记录UnityLog4NetExtension(1.1)。

这一切都完全符合预期,我会记录到事件日志和SQL Server。

但是,我只能看到如何包含内置的Log4Net属性 - 日期,线程,记录器,级别,消息,异常和位置。

我想将服务器主机名和其他自定义属性添加到日志中。

我知道我可以通过Log4Net配置在日志中添加额外的属性 - %property{host} - 但是我无法通过PostSharp的编织日志代码确定代码的位置。

这可能吗?

我是否必须编写自定义方面来执行此操作?

1 个答案:

答案 0 :(得分:1)

最简单的方法是将代码放在Global.asax中。

protected void Application_Start(Object sender, EventArgs e) {
    log4net.GlobalContext.Properties["host"] = System.Environment.MachineName;
    log4net.Config.XmlConfigurator.Configure();
}

只要您的服务启动,就会调用Application_Start函数。 另请注意,致电Configure以确保log4net已正确初始化。 除了你的web.config之外,你不应该修改任何其他内容。