2010-01-21 47 views
2

我有一個生成日誌的Windows服務,因爲它執行一些操作。我也爲我寫入日誌文件的每條日誌消息調用console.writeline。但是由於它是一個Windows服務,console.write行不可見。如何將C#控制檯應用程序附加到正在運行的Windows服務?

我想寫一個C#控制檯應用程序,可以附加到我的服務(已經運行),它可以顯示所有console.writeline消息,該進程(我的Windows服務)正在生成。

已更新:日誌量非常頻繁(每分鐘有50封郵件),我寧願不想爲這個事件記錄Windows事件日誌。使用cosole窗口有助於查看日誌並在方便時退出

回答

0

我使用cygwin在log4net創建的日誌文件上創建尾部,這似乎對我有用。

感謝您的幫助!

5

從服務中顯示窗口不是一個好主意,因爲您必須找出「正確」的會話(Windows允許多個用戶登錄)還需要該服務才能訪問用戶的桌面。

相反,將Console.WriteLine調用更改爲Trace.WriteLine可能是最容易的。然後你可以附加這些跟蹤消息,例如通過使用SysIntenal的DebugView

+0

+1爲DebugView – Fernando 2010-03-26 17:45:02

1

你可以使服務交互,在這種情況下你會看到控制檯窗口,但你會一直看到它,如果你關閉它,我會認爲,你會停止服務。

或者,讓控制檯監視器以合理的時間間隔從日誌文件中讀取更新,而不是嘗試直接進入服務進程。

+0

我認爲你的選擇是更好的解決方案。 – ChaosPandion 2010-01-21 15:05:46

+0

另一種方法是免費提供的:http://tailforwin32.sourceforge.net/ – 2010-01-21 15:13:34

+0

而我的5美分:與桌面的服務交互性很久以前就被微軟非常沮喪,我甚至不確定它是否仍然可以運行Windows 7甚至Vista – 2010-01-21 15:32:52

4

我想你會努力將控制檯附加到現有的服務。兩種簡單的方式

  1. 寫入Windows應用程序日誌
  2. 寫入到一個文本文件,然後你可以wintail打開或類似

重新您的更新 - 2號將是最好的呢。

1

我建議你將消息記錄到Windows事件查看器,如果沒有燃燒的願望在控制檯窗口上顯示它們。這link將幫助你...

0

通過UDP發送數據,並使一個簡單的程序來顯示數據。
您保證和異步操作,甚至可以發送到另一臺主機。

相關問題