Wie kann ich alle Logger verwendet in log4j2 verwendet bekommen? In log4j kann ich getCurrentLoggers wie hier beschrieben verwenden: Number of loggers usedWas ist getCurrentLoggers Analog in log4j2
Antwort
sieht aus wie ich den Weg gefunden habe:
File configFile = new File("c:\\my_path\\log4j2.xml");
LoggerContext loggerContext = Configurator.initialize("my_config", null, configFile.toURI());
Configuration configuration = loggerContext.getConfiguration();
Collection<LoggerConfig> loggerConfigs = configuration.getLoggers().values();
Wenn Sie in einer Web-Anwendung ausführen, können Sie mehr LoggerContext
s haben. Bitte beachten Sie, wie LoggerConfig
s über JMX in der org.apache.logging.log4j.core.jmx.Server Klasse ausgesetzt sind.
erhalten alle Logger in log4j2 verwendet:
LoggerContext logContext = (LoggerContext) LogManager
.getContext(false);
Map<String, LoggerConfig> map = logContext.getConfiguration()
.getLoggers();
Achtung:
Verwendung org.apache.logging.log4j.core.LoggerContext
nicht org.apache.logging.log4j.spi .LoggerContext
Es funktioniert wie ein Charme. – zygimantus
Mit 2.6.2 gibt es keine 'LoggerContext.getConfiguration()' –
Verwenden Sie wie org.apache.logging.log4j.core.LoggerContext logContext = (org.apache.logging.log4j.core.LoggerContext) LogManager .getContext (falsch); – zhukunqian
YuriRs Antwort ist unvollständig, da es nicht darauf hinweist, dass LoggerConfig Objekte zurückgegeben werden, nicht Logger. Dies ist der grundlegende Unterschied zwischen Log4j1 und Log4j2 - Logger können in Log4j2 nicht direkt manipuliert werden. Einzelheiten finden Sie unter Log4j2 Architecture.
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Collection<? extends Logger> loggers = ctx.getLoggers();
Während dieser Code die Frage beantworten kann, zusätzliche Kontext in Bezug auf _why_ und/oder _how_ es Antworten die Frage würde erheblich verbessern seine langfristige Wert. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erklärung hinzuzufügen. –
Beachten Sie, dass der LoggerContext, an den der LoggerContext übergeben wird, der für log4j-core ist - die eigentliche Implementierung. Obwohl dies unwahrscheinlich ist, übernimmt Log4j keine Garantie dafür, dass sich diese Implementierungsklassen nicht von Release zu Release ändern. Beachten Sie auch den Javadoc-Kommentar für diese Methode: "Ob diese Sammlung eine Kopie der zugrunde liegenden Sammlung ist oder nicht, ist nicht definiert. Ändern Sie diese Sammlung daher auf eigenes Risiko." Im aktuellen Code erhalten Sie eine Kopie. – rgoers
Es ist wichtig zu beachten, dass LoggerConfig Objekte von getLoggers() und NICHT die Logger selbst zurückgegeben werden. Wie vacant78 gezeigt hat, ist dies nur für die Konfiguration von Loggern geeignet, die noch instanziiert werden müssen. Wenn bereits eine Gruppe von Protokollierern instanziiert wurde, kann die Konfiguration mit dieser Methode nicht geändert werden.
Zum Beispiel, um den Pegel zu ändern während der Laufzeit der Anmeldung finden Sie auf diesen Link, die innerhalb von Apache (keine Überraschung) eine nicht dokumentierte API verwendet, die alle Ihre derzeit instanziiert Logger Ebenen ändern: Programmatically change log level in Log4j2
- 1. Was ist in Java monad analog?
- 2. Was ist Linux analog zu WIN32_FIND_DATA Struktur
- 3. Was ist ein analoges CryptSetProvParam (PP_SIGNATURE_PIN) Analog in CryptoAPI NG?
- 4. Was ist das Analog für .Net InvalidOperationException in Python?
- 5. Was ist eine Beispiel-Standardkonfigurationsdatei in YAML für log4j2?
- 6. Was bedeutet "Status" in der Log4j2-Konfiguration?
- 7. Was ist der Ada-Befehlszeilen-Redirector analog zu ">"?
- 8. Was ist das nächste C++ - Analog zu Ruby's Rack?
- 9. Was ist das KnownType-Attribut analog für die XML-Serialisierung?
- 10. Was ist C# .Net Analog für Flash/Flex flash.utils.ByteArray?
- 11. Was ist das JSON-Äquivalent zu dieser Log4J2-Konfiguration?
- 12. Mutex analog in SQL?
- 13. MemoryStream analog in Python
- 14. Apache Log4j2 paketspezifische Protokollierung mit log4j2.xml
- 15. Analog von || = operator in elixir
- 16. Analog von `let` in ExUnit
- 17. Log4j2 Abwärtskompatibilitätsprobleme
- 18. PBEKeySpec C++ analog
- 19. Fitnet-Funktion analog in Octave
- 20. Analog System.Dynamic.ExpandoObject in .NET Core
- 21. Analog System.Security.Permissions in .NET Core
- 22. NSURL analog zu CFURLCreateCopyAppendingPathComponent?
- 23. Was ist das Analog zu Excel Interop's Worksheet.UsedRange.Rows in Spreadsheet Light?
- 24. DirectInput Analog Joystick Bereich
- 25. Analog von Pythons OrderedDict?
- 26. Log4J2 gesetzt params in Appen
- 27. Log4j2 TimeBased Triggering Policy
- 28. C Analog zu STL
- 29. Ruby :: analog von call_user_func_array()
- 30. IsBadReadPtr analog unter Unix
10x. werde es überprüfen. – YuriR