LoggingEventSource Sınıf

Tanım

Tüm ILogger tabanlı günlükleri EventSource/EventListener günlüğüne köprüler.

public ref class LoggingEventSource sealed : System::Diagnostics::Tracing::EventSource
[System.Diagnostics.Tracing.EventSource(Name="Microsoft-Extensions-Logging")]
public sealed class LoggingEventSource : System.Diagnostics.Tracing.EventSource
[<System.Diagnostics.Tracing.EventSource(Name="Microsoft-Extensions-Logging")>]
type LoggingEventSource = class
    inherit EventSource
Public NotInheritable Class LoggingEventSource
Inherits EventSource
Devralma
LoggingEventSource
Öznitelikler

Örnekler

Bu örnekte, ILogging bilgilerini almak için EventListener'ın nasıl kullanılacağı gösterilmektedir.

class MyEventListener : EventListener {
    protected override void OnEventSourceCreated(EventSource eventSource) {
        if (eventSource.Name == "Microsoft-Extensions-Logging") {
            // Initialize a dictionary of arguments to pass to the EventSource.
            // Turn on loggers matching App* to Information; everything else (*) is the default level (which is EventLevel.Error).
            var args = new Dictionary<string, string>() { { "FilterSpecs", "App*:Information;*" } };
            // Set the default level (verbosity) to Error, and only ask for the formatted messages in this case.
            EnableEvents(eventSource, EventLevel.Error, LoggingEventSource.Keywords.FormattedMessage, args);
        }
    }
    protected override void OnEventWritten(EventWrittenEventArgs eventData) {
        // Look for the formatted message event, which has the following argument layout (as defined in the LoggingEventSource):
        // FormattedMessage(LogLevel Level, int FactoryID, string LoggerName, string EventId, string FormattedMessage);
        if (eventData.EventName == "FormattedMessage")
            Console.WriteLine($"Logger {eventData.Payload[2]}: {eventData.Payload[4]}");
    }
}

Açıklamalar

Bu günlüğü açmak için Microsoft-Extensions-Logging adlı EventSource'u etkinleştirirsiniz. EventSource'ı etkinleştirdiğinizde, ayarladığınız EventLevel ILogger ile ilişkilendirilmiş düzeye çevrilir (bu nedenle Debug = verbose,Informational = Informational , ). Critical == Critical Bu, olay düzeyine göre basit bir şekilde filtrelemenizi sağlar.

Daha ayrıntılı denetim için adlı FilterSpecsbir EventSource bağımsız değişkeni belirtebilirsiniz. Bağımsız FilterSpecs değişken, belirtimlerin noktalı virgülle ayrılmış listesidir. Her belirtim şu şekildedir:

SPEC = // Boş belirtim, *ile aynı.

| AD // Adlandırılmış belirtim. Varsayılan düzeyi kullanır.

| AD : DÜZEY // Belirli bir günlükçü için düzeyi belirtir (* soneki olabilir).

içinde "UseAppFilters" belirtildiğinde FilterSpecs, tüm kategorilerin devre dışı bırakılması önlenir; bu, varsayılan olarak aksi takdirde gerçekleşir.

Name bir (büyük/küçük harf önemlidir) adıdır ILogger ve joker karakter işlevi gören * ile bitebilir. Örneğin, Net* 'Net' ile başlayan tüm günlüğe kaydedenlerle eşleşecektir.

LEVEL bir sayı veya LogLevel dizedir (0=İzleme, 1=Hata Ayıklama, 2=Bilgi, 3=Uyarı, 4=Hata, Kritik=5). Bu, ilişkili desenin düzeyini belirtir. Sayı belirtilmemişse (belirtimin ilk biçimi), EventSource için varsayılan düzeydir.

İlk eşleşme, belirli bir ad birden fazla desenle eşleşiyorsa kullanılır.

Düzey ve FilterSpecs bağımsız değişkenine ek olarak EventSource anahtar sözcüklerini de ayarlayabilirsiniz:

* Keywords.Message - Olay ayrıştırılmış biçimde veri içerir.

* Keywords.JsonMessage - Olay ayrıştırılmış biçimde ancak JSON blobu olarak (bağımsız değişkene göre ayrılmamış) verileri içerir.

* Keywords.FormattedMessage - Olay, dize olarak biçimlendirilmiş verileri içerir.

Aynı anda bu anahtar sözcüklerden yalnızca birinin açık olması beklenir, ancak bunların tümünü açabilirsiniz (ve aynı verileri üç farklı şekilde günlüğe kaydedebilirsiniz).

Şunlara uygulanır