0

我有一个项目结构,我们有一个引用的项目(这里称为 RefProject)来进行我们的日志记录。因此,我在该 RefProject 中调用了一个方法,它对 Enterprise Library 进行了 WriteLog 调用,并且在现有的 Enterprise Library 跟踪监听器中一切正常。从 RefProject 项目中引用了所有企业库 dll。一切正常,配置在 web 项目(这里称为 WebProject)的 web.config 中完成(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" />

现在,我在一个单独的日志项目(这里称为日志项目)中创建了一个自定义跟踪侦听器。如果 WebProject 引用 Logging 项目,那么一切正常,并且跟踪侦听器按预期工作。如果 RefProject 引用 Logging 项目,那么当它尝试写入日志文件时会出现异常,说它找不到类型。

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

有任何想法吗?

<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"/>
4

1 回答 1

0

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

于 2015-09-07T14:38:54.200 回答