2017-07-13 53 views
1

我們正在嘗試使用Serilog.Sinks.SumoLogic(1.0.1)對Azure函數應用程序(不使用.NET核心)執行日誌記錄。以下是我們正在使用的代碼和appsetting.json。Azure函數:Appsetting.json不能與Serilog.Sinks.Sumologic一起使用

代碼:

var configuration = new ConfigurationBuilder() 
       .SetBasePath(Directory.GetCurrentDirectory()) 
     .AddJsonFile("appsettings.json",optional: false, reloadOnChange: true) 
     .Build(); 

var loggerFromConfig = new LoggerConfiguration() 
       .ReadFrom.Configuration(configuration) 
       .CreateLogger(); 

Appsettings.json:

{"Serilog": { 
"MinimumLevel": { 
    "Default": "Information", 
    "Override": { 
    "System": "Warning", 
    "Microsoft": "Warning" 
    } 
    }, 
    "WriteTo": [ 
    { 
    "Name": "SumoLogic", 
    "Args": { 
     "endpointUrl": "https:" 
     } 
    } 
    ]  
} 
} 

利用上述appsetting我們不能夠將sumologic水槽loggerFromConfig對象結合並_sinks = {Serilog.Core.ILogEventSink[0]}這表明有沒有水槽配置。

如果我們嘗試與Microsoft.NET.Core.Apps依賴項的示例項目相同的代碼它工作正常。

似乎appsettings.json僅支持.NET核心應用程序。

請建議如何使用Serilog編寫日誌與appsettings.json(沒有.NET核心應用程序)。

+0

任何更新?如果您覺得我的回答有用/有幫助,請將其標記爲答案,以便其他人可以從中受益。 –

回答

1

據我所知,ReadFrom.Configuration方法用於從.net core項目中的appsettings.json中獲取設置。

由於ReadFrom.Configuration方法需要IConfiguration對象。如果你想使用ConfigurationBuilder,你需要從Nuget安裝Microsoft.Extensions.Configuration包。

如果你安裝了這個Nuget包,你可以使用ConfigurationBuilder類。但它也會安裝Microsoft.NETCore.Platforms包。

在我看來,在.net應用程序中使用Serilog的正確方法是使用LoggerConfiguration()。WriteTo.SumoLogic方法。

var logger = new LoggerConfiguration().WriteTo.SumoLogic(url, 
           sourceName: "CustomSourceName", 
           sourceCategory: "CustomSourceCategory", 
           restrictedToMinimumLevel: LogEventLevel.Debug, 
           batchSizeLimit: 20, 
           period: TimeSpan.FromSeconds(1), 
           textFormatter: new RawFormatter()) 

更多細節,你可以參考這個codes

由於ReadFrom.Configuration方法也從appsettings.json文件讀取設置,然後使用這些設置來創建LoggerConfiguration對象,所以我建議您可以直接使用LoggerConfiguration()。WriteTo.SumoLogic方法。

此外,如果您仍然想使用appsettings.json,我建議您可以使用Newtonsoft包讀取appsettings.json的設置。然後,您可以將這些設置作爲參數傳遞給LoggerConfiguration()。WriteTo.SumoLogic方法。

相關問題