【发布时间】: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