包括使用 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 之外,您不必修改任何其他内容。
我有一个 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 之外,您不必修改任何其他内容。