使用SimpleInjector我在配置結束時調用container.Verify()
,並在調試器中獲取診斷信息,如the documentation中所述。我想將這些信息寫入日誌文件。有沒有辦法以編程方式訪問它或以某種方式將記錄器或跟蹤器掛接到SimpleInjector?我可以將SimpleInjectors診斷的結果寫入日誌文件嗎?
回答
簡單注入器2.4包含一個diagnostic API(SimpleInjector.Diagnostics.dll),允許您查詢容器以獲取診斷警告。使用這個API,您可以編寫集成測試,可以自動檢查配置診斷警告:
// using SimpleInjector.Diagnostics;
[TestMethod]
public void Container_Always_ContainsNoDiagnosticWarnings()
{
// Arrange
var container = Bootstrapper.GetInitializedContainer();
container.Verify();
// Assert
var results = Analyzer.Analyze(container);
Assert.IsFalse(results.Any(), Environment.NewLine +
string.Join(Environment.NewLine,
from result in results
select result.Description));
}
當然,你也可以寫一個文件:
var results = Analyzer.Analyze(container);
File.WriteAllLines("c:\\diagnostic.txt", results.Select(r => r.Description));
謝謝,這似乎是做我需要的。順便說一句,如果你有興趣在沒有訴諸反思的情況下暴露我可以刺穿它並給你一個公關。 –
感謝您的提議,但系統的這一部分是內部的原因。除非我確定API是正確的,否則我不想公開事物。例如,這個特性將來可能會有自己的彙編,並且會有所改變。這就是爲什麼它現在不開放。如果這對您不方便,我很抱歉。 – Steven
沒問題。我可以欣賞這一點。 –
ContainerDebugView我猜可以歸類爲SimpleInjector中診斷機制的Facade類,它只用作Container類的DebuggerTypeProxy。
這是一個帶有公共構造函數的內部類,所以如果不使用反射和Activator類就不能構造它。如果你這樣做了,你應該可以用你的容器調用構造函數,然後使用Items屬性來獲取一個DebuggerViewItem數組,其中包含你的配置中的警告和錯誤的名稱,描述等。
希望這會有所幫助,因爲我當然可以看到爲什麼您可能希望能夠在不使用調試器的情況下查看錯誤。 (例如,在單元測試中)
- 1. 我們可以使用akka.event.Logging在文件中寫入日誌嗎?
- 2. IPython.parallel - 我可以將自己的日誌寫入引擎日誌嗎?
- 3. 將日誌寫入文件
- 4. 我可以添加日誌寫入我的批處理文件嗎?
- 5. 診斷日誌記錄
- 6. RequestFactory生產日誌/診斷上下文
- 7. 我在哪裏可以將我的log4net日誌文件寫入ClickOnce下?
- 8. 從python cgi我可以寫入Lighttpd日誌文件?
- 9. Outlook插件可以寫入系統事件日誌嗎?
- 10. log4net,可以將2個應用程序寫入同一個日誌文件嗎?
- 11. 將事件日誌寫入文件,powershell
- 12. 如何在powershell中運行.exe文件並將結果寫入日誌文件
- 13. log4j不將日誌寫入文件
- 14. 如何將ApScheduler日誌寫入文件?
- 15. Python - 將日誌寫入文件
- 16. Android將日誌寫入文件
- 17. 寫入日誌文件
- 18. powershell寫入日誌文件
- 19. C#寫入日誌文件
- 20. Log4j不斷寫入日誌文件,即使沒有什麼可寫的東西?
- 21. 如何控制Azure診斷日誌的日誌級別?
- 22. 下載天青診斷日誌?
- 23. 如何查看天青診斷日誌
- 24. 診斷/日誌存儲表在哪裏?
- 25. Azure診斷日誌大小限制
- 26. Windows手機診斷日誌記錄
- 27. 使用PowerShell下載Azure診斷日誌
- 28. 我可以從Windows腳本語言(如JScript)寫入Windows事件日誌嗎?
- 29. Visual Studio 2017診斷工具不會清理日誌文件
- 30. 將日誌消息寫入日誌文件中openscript
你爲什麼要這麼做?當需要分析生產環境中發生的情況時,寫入日誌文件似乎很有用,但開箱和生產服務器上的DI配置之間的區別應該幾乎沒有區別,因此診斷結果將相同在你的機器和服務器上。 – Steven
我們目前正在開放診斷API。這可能會在下一個次要版本(v2.4)中添加。 – Steven
聽起來不錯:-) –