c#
  • asp.net-core
  • serilog
  • 2017-05-25 34 views 1 likes 
    1

    ASP.NET核心日誌記錄具有「記錄事件ID」的這種概念,
    ,以便我們可以像這樣記錄行(從他們的文檔中);ASP.NET Core中的Serilog - 在其自己的列中記錄EventId

    _logger.LogInformation(LoggingEvents.GET_ITEM, "Getting item {ID}", id); 
    

    Serilog寫這個inforamtion,LoggingEvents.GET_ITEM,在屬性欄

    <property key='EventId'> 
    <structure type=''> 
        <property key='Id'>1002</property> 
    </structure> 
    

    我已經在數據庫表中添加了一個新列 '事件ID',並補充此ColumnOptions到記錄器

    columnOptions.AdditionalDataColumns = new List<DataColumn> 
         { 
          new DataColumn {DataType = typeof(byte), ColumnName = "EventId"}, 
          new DataColumn {DataType = typeof(string), ColumnName = "SessionId"} 
         }; 
    

    但是Serilog不會寫任何東西給da tabase。只有當我刪除這行:
    new DataColumn {DataType = typeof(byte), ColumnName = "EventId"},
    是否Serilog將行寫入數據庫,但沒有EventId列。
    如何編寫事件ID?

    回答

    1

    EventId in ASP.NET Core不是一個整數,而是一個可能包含一個整數,一個字符串(既不)或(有效)或兩者兼有的結構。

    https://github.com/aspnet/Logging/blob/dev/src/Microsoft.Extensions.Logging.Abstractions/EventId.cs

    當它到達SQL Server的水槽,它不能被轉換成數字列,可惜。我認爲你需要指定這個列作爲文本才能工作。

    +1

    非常好。謝謝尼古拉斯,並感謝你爲這個偉大的圖書館。 – ashilon

    相關問題