使用从另一个项目引用引用的tracelistener引用

时间:2014-07-23 16:56:26

标签: c# enterprise-library enterprise-library-5 tracelistener

我有一个项目结构,我们有一个参考项目(简称为参考项目),它可以进行日志记录。所以我在RefProject中调用一个方法,并对Enterprise Library执行WriteLog调用,一切都可以与现有的Enterprise Library tracelisteners一起使用。所有企业库dll都在RefProject项目中引用。一切正常,配置在Web项目的web.config(此处称为WebProject)中完成(WebProject引用RefProject,但不引用EntLib dll)。

以下是在web.config中配置的标准侦听器的示例。

<add name="Rolling Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        fileName="C:\Logfiles\logger.log"
        footer="" formatter="Text Formatter" header="" rollFileExistsBehavior="Increment"
        rollInterval="Midnight" filter="Verbose" />

现在,我在一个单独的日志记录项目中创建了一个自定义tracelistener(此处称为Logging项目)。如果WebProject引用了Logging项目,那么一切正常,并且tracelistener按预期工作。如果RefProject引用了Logging项目,那么当它尝试写入日志文件时发现它无法找到类型时会出现异常。

理想情况下,我不希望所有客户端应用程序都需要保留此引用。我想这一切都由RefProject照顾。 RefProject已经使用其他EntLib默认侦听器来处理这个问题。我不明白为什么当所有其他EntLib组件由RefProject而不是WebProject直接引用时,WebProject需要将这个新项目引用到logger。

有什么想法吗?

<add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        databaseConfig="ExceptionsDatabase" writeLogStoredProcName="WriteLog"
        addCategoryStoredProcName="AddCategory" type="Logging.CustomExceptionTrackerTraceListener, GB.Logging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
        traceOutputOptions="LogicalOperationStack, Callstack" name="Database Exception Tracking Listener"
        formatter="Text Formatter" filter="Error"/>

1 个答案:

答案 0 :(得分:0)

尝试kill de WebServer进程,清理并重建我们的项目,然后再次运行F5。