我正在嘗試構建(用於學習目的)我自己的事件記錄器;我對使用非.NET框架而不是構建自己的框架感興趣,因爲我正在通過這樣做來更好地理解.net。C#自定義記錄器 - 捕獲發送對象的最佳方式
這個想法是有一個事件系統,我可以寫出來的日誌文件和/或從程序內部拉。爲此,我創建了一個LogEvent
類,該類將存儲在Queue<LogEvent>
的內部。
我打算在我LogEvent
類使用以下字段:
private EventLogEntryType _eventType //enum: error, info, warning...
private string _eventMessage
private Exception _exception
private DateTime _eventTime
什麼我不知道是捕獲導致被稱爲該事件的對象的最佳方式。我想過只是做一個private Object _eventObject;
,但我認爲這不是線程安全或不安全。
有關如何最好地存儲調用該事件的對象的任何建議,將不勝感激。我也願意接受你可能提出的其他建議。
謝謝,託尼
我也想提及_eventMessage或_exception中需要;兩者都可以添加,但只需要一個。 –
你想要存儲調用該事件的對象的原因是什麼?如果你要簡單地在對象上使用'.ToString()'來創建日誌消息,那麼最好存儲'.ToString()'值。 – Jastill
@Jastill我第二,特別是在例外的情況下。我會採取異常.ToString()並做一個遞歸附加與內部例外。你的EventLogEntryType會讓你知道它是否是一個異常。 – Khan