Please assign a menu to the primary menu location under menu

HYPESOUL

Lassen Sie das Konvertierungsmuster “%-5p [%t]: %m%n” sein und gehen Sie davon aus, dass die log4j-Umgebung auf die Verwendung eines PatternLayout festgelegt wurde. Dann die Anweisungen Ein flexibles Layout konfigurierbar mit Musterzeichenfolge. Dieser Code ist bekannt, Synchronisation und andere Probleme, die nicht in org.apache.log4j.EnhancedPatternLayout vorhanden sind. EnhancedPatternLayout sollte anstelle von PatternLayout verwendet werden. EnhancedPatternLayout wird im log4j extras-Begleiter verteilt. Wie ich oben gezeigt habe, kann es sich bei der Erstellung von Shoehorning-Daten aus einer LoggingEvent.Message in JSON auf der Ebene der Konfigurationsdatei einer Anwendung um einen Unfall ereignen. Ein unerwartetes Anführungszeichen oder Komma innerhalb der Nachricht kann die gesamte JSON ungültig machen. Wenn wir uns also entscheiden, Protokolldaten im JSON-Format an unsere Protokollsammler zu senden, müssen benutzerdefinierte Daten wie LogEvent.Message auf konsistente und sichere Weise in JSON konvertiert werden. Die Technik, die ich gerne verwende, ist die Verwendung der JsonConvert-Dienstprogrammklasse von James Newton-King, um POCOs (Plain Old CSharp Object) zu konvertieren, die eine Nachricht beschreiben, die ich als JSON protokollieren möchte, die ich dann als Protokollnachricht übergeben werde. Dieses Konvertierungswort kann auch Auswertungen verwenden, um Protokollierungsereignisse anhand eines bestimmten Kriteriums zu testen, bevor Anruferdaten berechnet werden. Wenn Sie z.

B. mit dem %-Aufrufer 3 drei Zeilen Stacktrace anzeigen, wird CALLER_DISPLAY_EVAL nur angezeigt, wenn der Auswertungswert, der CALLER_DISPLAY_EVAL aufgerufen hat, eine positive Antwort zurückgibt. Während die Ausgabe in Bezug auf die menschliche Interpretation selbst beschreibend ist, ist sie für indexierte Speicherung nicht optimal. Die Felder Datum, Ebene, Logger und Nachricht werden inkonsistent beschrieben. Langfristig muss jeder, der Informationen aus solchen Einträgen sammeln möchte, viel suchen und abrufen, indem er reguläre Ausdrücke verwendet. Betrachten Sie jedoch das folgende Konvertierungsmuster, das unten in Listing 3: PatternLayout dargestellt ist, mit dem Sie bestimmen können, wie Daten aus Protokollereignissen extrahiert und basierend auf einem Konvertierungsmuster für die Ausgabe formatiert werden. Konvertierungsmuster fungieren als Platzhalter für Daten, die in jedem Protokollereignis angezeigt werden. Lassen Sie uns z. B. ein PatternLayout aufschlüsseln, das häufig in Log4j verwendet wird: Wie bereits erwähnt, bietet das Log4Net -Konvertierungspattern /> Anpassungsfähigkeiten, die sehr leistungsstark und flexibel sind. Wir können das Log4Net-Konvertierungsmuster nutzen, um sicherzustellen, dass die protokollierten Daten immer selbst beschreibend sind, unabhängig von den Protokolldaten, die von der Anwendung emittiert werden. Das Konvertierungsmuster von PatternLayout ist eng mit dem Konvertierungsmuster der printf()-Funktion in der Programmiersprache C verknüpft.

Ein Konvertierungsmuster besteht aus literalem Text und Formatsteuerungsausdrücken, die als Konvertierungsbezeichner bezeichnet werden. Es steht Ihnen frei, beliebigen Literaltext in das Konvertierungsmuster einzufügen. Jeder Konvertierungsbezeichner beginnt mit einem Prozentzeichen `%` und wird von optionalen Formatmodifikatoren, einem Konvertierungswort und optionalen Parametern zwischen geschweiften Klammern gefolgt. Das Konvertierungswort steuert das zu konvertierende Datenfeld, z. B. Loggername, Ebene, Datum oder Threadname. Die Formatmodifikatoren steuern Feldbreite, Auffüllung und linke oder rechte Ausrichtung. Genau wie das obige %logger-Konvertierungswort nimmt diese Konvertierung eine ganze Zahl als Option an, um den Klassennamen zu kürzen. Zero hat eine besondere Bedeutung und bewirkt, dass der einfache Klassenname ohne das Paketnamenpräfix gedruckt wird.