我正在使用 Serilog 將我們的 log4net 記錄器替換為結構化日志記錄。我想使用 Enum 在代碼中強制執行標記,但我在如何執行時遇到了一些困難?,F在我的日志看起來像這樣:logger.ErrorFormat("Proxy Logic for the Item {Item} failed. Swallow exception", Item); 當ErrorFormat簽名是void ErrorFormat(string format, params object[] args);但我不知道如何替換Item為類似LogTags.TagA. 當 TagA 是一個 Enum 時,它會給我一種方法來為我的標記強制執行統一的標準。所以它看起來像:public enum LogTags{TagA,...}public class Foo{ public void DoError() { logger.ErrorFormat("Proxy Logic for the Item {@LogTags.TagA} failed. Swallow exception", Item); }} 實現這一目標的最佳實踐是什么?
1 回答

元芳怎么了
TA貢獻1798條經驗 獲得超7個贊
Serilog 中的屬性名稱需要是簡單的非點標識符,因此像這樣的名稱Enum.LogTags.Item不能直接使用。
如果簡單的名稱不夠用,您可以使用類似下面的模式來強制此嵌套:
logger.ErrorFormat(
"Proxy Logic for the Item {@Enum} failed. Swallow exception",
new { LogTags = new { Item }});
- 1 回答
- 0 關注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消