我已將所有服務邏輯封裝在類庫中。當我在命令行應用程序中實例化類庫時,會收到我的跟蹤信息。.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