我已将所有服务逻辑封装在类库中。当我在命令行应用程序中实例化类库时,会收到我的跟踪信息。.Net Windows服务和自定义跟踪监听器
当我在Windows服务中实例化类时,看到我的自定义跟踪侦听器已创建日志目录并启动一个文件,但它保持0 KB。
两个应用程序有这个在.config:
<system.diagnostics>
<switches>
<add name="PTraceSwitch" value="Verbose" />
</switches>
<trace autoflush="true">
<listeners>
<add name="CustomXmlWriterTraceListener" />
<add name="MyServiceEventListener" />
<remove name="Default" />
</listeners>
</trace>
<sharedListeners>
<add
type="CustomUtilities.CustomXmlWriterTraceListener, CustomUtilities"
name="CustomXmlWriterTraceListener"
initializeData="Logs\MyService.svclog"
RollLogAtMidnight="True"
DateFormat="yyyy.MM.dd"
MaxFileSizeMB="1"
CompressLogsOlderThanTimeSpan="1.00:0:00"
DeleteLogsOlderThanTimeSpan="30.00:00:00"/>
<add name="MyServiceEventListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="MyServiceEventLog">
<filter type="System.Diagnostics.EventTypeFilter"
initializeData="Warning" />
</add>
</sharedListeners>
您是否缺少'Trace.Flush()'? – 2010-07-09 22:49:45
你确定'Logs \ MyService.svclog'文件是相对于你的exe创建的吗?服务通常以'\ Windows'或'\ Windows \ System32'作为其工作目录。 – 2010-07-09 22:51:22
@ Rubens Farias,我将它设置为Autoflush,Flush()似乎没有帮助 – mittio 2010-07-09 23:36:10