我試圖在Devforce Classic中實現自定義日誌發佈者。我想要做的是將寫入客戶端和服務器調試日誌的所有內容重定向到實現NLOG的日誌發佈者。該文檔指出,您可以實現自己的TraceSubscriber來連接自定義日誌發佈器。我無法獲取任何跟蹤消息來激發我的自定義發佈者的方法。有沒有可用的樣本可以讓我指出正確的方向?DevForce Classic實現自定義TraceSubscriber
0
A
回答
0
我發現了一個片段,顯示如何直接使用DF TraceSubscriber給用戶設置爲發佈消息的唯一樣本:
// Creates either WCF or Remoting instance based on IdeaBladeConfig.
// Overloads are available, or construct the concrete class directly.
var traceSubscriber = TraceSubscriber.CreateInstance();
// The publish handler will be where you take the trace message and log to your own logs.
traceSubscriber.Publish += PublishHandler;
traceSubscriber.SubscriptionError += SubscriptionErrorHandler;
// This is overloaded
traceSubscriber.StartSubscription(url);
// You can issue this when done.
traceSubscriber.StopSubscription();
你將不能夠取代現有的TracePublisher機制,因爲它已經包含在DF中,但您可以通過類似於上面的代碼直接使用TraceSubscriber自定義訂閱方,通過繼承TraceSubscriber或實現ITraceSubscriber。訂戶將收到所有跟蹤消息,然後您的代碼可以確定如何處理它們。
如果你想嘗試定製ITraceSubscriber實施,請注意文檔(和實施)是一個有點古怪,以及連接到有線起來,你還必須獲得TracePublisher實例或代理,並調用它的訂閱方法:
// local (in-process) publisher:
var publisher = TracePublisher.LocalInstance;
publisher.Subscribe(this);
// for remote publisher:
var localURL = TracePublisher.CreateInstance().GetPublisherUrl(null);
// Use RemotingTracePublisher or WcfTracePublisher
var publisher = RemotingTracePublisher.GetRemoteInstance(localURL);
publisher.Subscribe(this);
訂閱後,出版商將調用ITraceSubscriber.OnPublish方法:
public void OnPublish(TraceMessage traceMessage)
{
// do something with trace message
}
相關問題
- 1. DevForce 2012上的自定義驗證器
- 2. 自定義實體實現
- 3. 自定義ComparableBinding實現
- 4. 實現Tomcat自定義閥
- 5. MediaStreamSource自定義實現
- 6. 自定義UINavigationController實現
- 7. 實現自定義的UIViewController
- 8. bin2hex的自定義實現
- 9. 實現自定義MapReduce
- 10. 實現自定義UIScrollView
- 11. 實現touchesBegan自定義類
- 12. Microsoft.AspNet.Identity.IUser的自定義實現
- 13. 實現自定義TypeConverter
- 14. phpunit自定義setcookie實現
- 15. 實現自定義廣告
- 16. 自定義字段實現
- 17. IBodyModelValidator自定義實現
- 18. xtext實現自定義IResourceValidator
- 19. UIView setFrame自定義實現
- 20. 自定義pyqtSignal實現
- 21. 實現自定義JQM元
- 22. MSP的自定義實現
- 23. 實現自定義主題
- 24. 自定義LINQ實現
- 25. 實現自定義BackgroundWorker
- 26. 實現Android自定義Tabbar
- 27. 實現自定義list.addAll()
- 28. Gson自定義TypeAdapter實現
- 29. 實現自定義流
- 30. 自定義Netty ServerChannel實現
感謝金!我可以通過創建一個新的TraceSubscriber的實例並訂閱該URL(上面的建議#1)來獲得此工作。關於關閉默認xml跟蹤發佈器使用的默認xml輸出,我只是簡單地將日誌文件設置爲空值。我意識到它不會在技術上關閉它,但它確實會壓制寫入xml文件,這正是我所要做的。 – Tim
xml輸出是由一個叫做TraceFileXmlLogger的東西創建的,它使用TraceSubscriber。當您將日誌文件設置爲空字符串時,TraceFileXmlLogger永遠不會創建,所以您確實將其關閉。但是,無論訂閱者是否有訂閱者,TracePublisher都會一直髮布。 –