的ILogger接口只有一個登錄方法:如何使用Microsoft.Extensions.Logging與應用洞察記錄事件和指標
void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter);
應用的見解給了我豐富的API是這樣的:
TrackMetric(string name, double value, IDictionary<string, string> properties = null);
TrackException(Exception exception, IDictionary<string, string> properties = null, IDictionary<string, double> metrics = null);
TrackTrace(string message, SeverityLevel severityLevel, IDictionary<string, string> properties);
我應該如何實現一個自定義的ILogger,並且仍然具備應用程序見解的所有功能?我能想到的一個方法是定義不同的像下面TState
類型:當我需要追查
class Trace
{
public string Message {get;set;};
public IDictionary<string, string> Properties;
public Trace(string message, IDictionary<string, string> properties)
{
this.Message = message;
this.Properties = properties;
}
}
然後,我做這樣的事情:
logger.Log<Trace>(LogLevel.Information, eventId, new Trace("sample trace",null));
這樣我轉這trackXXX
方法我用於基於TSTate
類型的Log<TState>
實現(我爲Exception,Metric和Event創建類型)。但是,這看起來太複雜了,寫了一個簡單的跟蹤,我錯過了其他任何方式?
問題是 - 爲什麼你需要使用ILogger接口?什麼是用例? – EranG
這個用例是在dot net core中它是一個第一類公民,因爲它被自動注入(如果我實現提供者,工廠等等)並且自己記錄內部點網絡核心痕跡。此外,我想登錄到多個地方,如事件日誌,本地文件和應用程序見解等,這很容易(因爲有一些我可以添加和使用的提供者,而不是自己編寫所有這些) – AzureMinotaur