c# - Log4net 停止使用自定义渲染器

标签 c# .net wcf log4net

我有许多自定义对象渲染器,这样我就可以尽可能保持日志语句干爽。当我第一次部署我的应用程序时,log4net 无法识别自定义渲染器,但它确实可以正确执行其他所有操作。如果我触摸它的配置文件(让它看起来已更改),文件观察器会拾取更改并且渲染器开始工作。但是过了一段时间他们又停止工作了,我不得不再次触摸 log4net 配置文件。

设置是 .Net 3.5 (sp1) wcf 应用程序。 vs 2008 开发 Web 服务器和 win 2008 上的 IIS 7 都出现了问题。我有一个名为 log4net.config 的配置文件,我正在使用 AssemblyInfo 方法指向它。

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

我访问记录器的方式是像这样在类上使用静态成员。

private static readonly ILog log = LogManager.GetLogger(typeof(Service));

渲染器的配置与此类似。

<renderer renderingClass="MyCompany.Log4net.SearchRequestRenderer, MyCompany.Log4net" renderedClass="System.DirectoryServices.Protocols.SearchRequest" />

这些渲染器都在一个单独的组件中,与发生日志记录的主要组件不同。我错过了什么或做错了什么吗?我不知道为什么它不能立即识别渲染器然后稍后又忘记它们。

最佳答案

我找到了答案。我必须为呈现的类包含更多的程序集信息。

<renderer renderingClass="MyCompany.Log4net.SearchRequestRenderer, MyCompany.Log4net" renderedClass="System.DirectoryServices.Protocols.SearchRequest" />

成为

<renderer renderingClass="MyCompany.Log4net.SearchRequestRenderer, MyCompany.Log4net" renderedClass="System.DirectoryServices.Protocols.SearchRequest, System.DirectoryServices.Protocols, Version=2.0.0.0 , Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 

关于c# - Log4net 停止使用自定义渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045316/

相关文章:

c# - 阻止与 Azure 存储帐户的连接

c# - 用于动态小数位数的 MVC ValidationMessage

wcf - 对于 WPF 和 WCF 应用程序的用户身份验证/授权,什么被认为是 "best practice"?

wcf - 使用 WCF 在 Velocity/AppFabric 中缓存区域

C#在不按住按钮的情况下单击按钮运行耗时的方法

c# - 使用 C# 进行图形导航

c# - 如何检查正则表达式组是否相等?

.net - 哪个 `[InternalsVisibleTo]` 用于 .NET Framework 和 .NET Standard/Core 框架程序集?

影响客户的 WCF 契约(Contract)变更

c# - serilog 异步接收器在关闭时不会将缓冲区刷新到磁盘