我想將我的全部資料記錄在一個檔案中,并且只記錄我的 oracle 資料庫中的錯誤。我正在使用下面的代碼,但它不起作用。
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose().WriteTo.File("logs/myLog.txt", rollingInterval: RollingInterval.Minute)
.MinimumLevel.Error().WriteTo.Oracle(cfg =>
cfg.WithSettings(logConnectionString, tableSpaceAndTableName: "MY_TABLE")
.UseBurstBatch(true, 1000, true, 1)
.CreateSink())
.CreateLogger();
在這種情況下,我只記錄檔案和 oracle 資料庫中的錯誤資料。我必須如何配置上面的代碼,將整個資料存盤在一個檔案中,并將錯誤資料存盤在資料庫中?
uj5u.com熱心網友回復:
幾乎所有的接收器都有一個restrictedToMinimumLevel引數。Serilog.Sinks.OracleSerilog Github 存盤庫中沒有專案,所以我假設您使用Serilog.Sinks.Oracle。所述的Oracle()方法接受restrictedToMinimumLevel引數為好。
您可以將代碼更改為:
Log.Logger = new LoggerConfiguration()
.WriteTo.File("logs/myLog.txt",
rollingInterval: RollingInterval.Minute,
restrictedToMinimumLevel:LogEventLevel.Verbose)
.WriteTo.Oracle(cfg =>
cfg.WithSettings(logConnectionString, tableSpaceAndTableName: "MY_TABLE")
.UseBurstBatch(true, 1000, true, 1)
.CreateSink(),
restrictedToMinimumLevel:LogEventLevel.Error )
.CreateLogger();
配置資料庫日志記錄通常需要比這更多的代碼,因此將代碼提取到不同的方法是個好主意。您可能希望使用其他列來提取常見屬性,如類別、活動 ID 等,這樣您就不必決議 JSON 負載來查找特定事件:
ILogEventSink ConfigureOracle(BatchLoggerConfiguration cfg)
{
const string column = "ADDITIONALDATACOLUMN";
var columnOptions = new ColumnOptions
{
AdditionalDataColumns = new List<DataColumn>
{
new DataColumn(column , typeof(string))
}
};
return cfg.WithSettings(logConnectionString, tableSpaceAndTableName: "MY_TABLE")
.UseBurstBatch(true, 1000, true, 1)
.CreateSink();
}
...
Log.Logger = new LoggerConfiguration()
.WriteTo.File("logs/myLog.txt",
rollingInterval: RollingInterval.Minute,
restrictedToMinimumLevel:LogEventLevel.Verbose)
.WriteTo.Oracle(ConfigureOracle,LogEventLevel.Error )
.CreateLogger();
組織資料庫日志記錄代碼
我也登錄到資料庫。將所有內容都放在一個運算式中可能很流行,但生成的代碼很快就會變得難以閱讀和維護。Fluent API 并不總是一個好主意。
在這種情況下,幾乎總是需要指定額外的列來保存常見屬性,例如類別和活動 ID,甚至可能是客戶 ID。這意味著指定額外的列。無論是哪種資料庫產品,查詢原始 JSON 資料都比查詢物化和索引列的成本更高。
需要進行一些實驗,直到獲得一張您可以實際用于故障排除的表。如果不是單獨的檔案,則應將資料庫日志記錄配置提取到單獨的單獨方法中。否則Startup.cs,在 .NET 6 中Program.cs, 將變成一團無法閱讀的混亂。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/356563.html
上一篇:LINQ從集合中按降序選擇,三個不同的值上升到元素的最大值
下一篇:從字串中提取資訊并將其分配給變數
