我有一些.net應用程序正在運行,我需要監視示例,然後在App1中調用MethodA,我的監視器應用程序應檢測到此情況。我有很多正在運行的應用程序,並且此處提出的解決方案是重新編譯所有這些應用程序,並在希望監視的所需方法中添加一行新行。我只想在絕對沒有辦法的情況下這樣做。有沒有人做過這樣的事情?基本上,我需要創建一個新的應用程序,當我點擊一個按鈕時,它會告訴我:MethodA在App1中實時調用...監視器運行.net應用程序
謝謝!
我有一些.net應用程序正在運行,我需要監視示例,然後在App1中調用MethodA,我的監視器應用程序應檢測到此情況。我有很多正在運行的應用程序,並且此處提出的解決方案是重新編譯所有這些應用程序,並在希望監視的所需方法中添加一行新行。我只想在絕對沒有辦法的情況下這樣做。有沒有人做過這樣的事情?基本上,我需要創建一個新的應用程序,當我點擊一個按鈕時,它會告訴我:MethodA在App1中實時調用...監視器運行.net應用程序
謝謝!
有幾種方法可以做到這一點。一種是使用log4Net,通過調用log4Net的寫入方法來「灑」你的方法。您可以選擇各種日誌appender(目的地),如電子郵件或數據庫,但不太知名的提示是要下載獨立程序DebugView(SysInternals - > now Microsoft),它會偵聽默認消息。
System.Diagnostics.PerformanceCounter是一個很好的開始。您可以創建可以在Performance控制面板小程序中查看的新計數器。他們在開始時有點困惑,但是當您意識到平均計數器需要兩個組件來計算一個百分比時,它會變得更容易。
我不知道.NET是否有匹配的機制,但Java允許您指定代理JAR文件,即每個類加載時通知/調用的類。然後,通過工具/字節碼操作,你可以攔截這種方法調用。也許你可以用.NET以某種方式替換類加載器。不確定。
我很確定你可以這麼做;但我相信你必須從非託管代碼中完成。 – TraumaPony 2008-09-22 11:32:26
反射就是你在.NET中尋找的東西,但我不確定你想要做什麼的實現細節。
PostSharp傳遞方式,如何編輯編譯後的.net代碼。編輯是用C#代碼編寫的(屬性)或配置代碼編寫的。 Thay有一個機制,可以記錄(或填充或其他)方法/事件調用等等。
我認爲,這是工具,你需要。
@Bruno的聲音想要記錄。他應該使用log4net並從apache抓取一份Chainsaw的副本。在app.config中的UdpAppender,突然你可以實時觀看所有的日誌記錄。這很棒。 – 2008-09-23 07:20:57