【问题标题】:Use tracelistener reference that is referenced from another project reference使用从另一个项目引用中引用的 tracelistener 引用
【发布时间】:2014-07-23 16:56:26
【问题描述】:

我有一个项目结构,其中我们有一个引用项目(这里称为 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 默认侦听器处理了这个问题。我不明白为什么 WebProject 需要让这个新项目引用记录器,而所有其他 EntLib 组件都是由 RefProject 直接引用而不是由 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"/>

【问题讨论】:

  • 您是否将 RefProject 中的 Logging 引用的 CopyLocal 设置为 True?
  • 是的。它已设置为复制本地。
  • 已解决。一切都设置正确,但是当我构建它时,它没有正确地将文件输出到 bin。我只需要删除该文件夹并进行良好的老式清洁+重建,然后一切都按预期工作。呼:)

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2019-04-03
    相关资源
    最近更新 更多