包括使用 PostSharp、Log4Net 和 Unity 的其他属性

Including additional properties using PostSharp, Log4Net and Unity

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

这一切都按预期工作,我同时记录到事件日志和 SQL 服务器。

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

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

我知道我可以通过 Log4Net 配置在日志中包含额外的属性 - %property{host} - 但我无法通过 PostSharp 的编织日志代码找出代码的位置。

这可能吗?

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

最简单的方法是像这样将代码放在 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 之外,您不必修改任何其他内容。