In meiner Log4j2 Config-Datei, ich habe dies:Erste Eigenschaften programmatisch von Log4j2 XML-Konfigurations
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" strict="true" name="XMLConfig" packages="org.apache.logging.log4j.test">
<Properties>
<Property name="baseDir">log-dir/</Property>
<Property name="defaultLogfileName">default-log-file</Property>
</Properties>
Jetzt in einigen meiner Code, erstelle ich benutzerdefinierte Logger. Ich muss auf den Wert von "baseDir" zugreifen und es ändern. Ich habe versucht, mit getProperties
aus dem Zusammenhang wie folgt aus:
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration configuration = context.getConfiguration();
configuration.getProperties();
Aber die Karte, die hat kommt wieder die Schlüssel „Hostnamen“ und „context“. Nicht die Eigenschaften, nach denen ich gesucht habe.
Ich dachte, dass ich im Stande sein könnte es von der rootLogger zu bekommen:
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration configuration = context.getConfiguration()
for (Property p : configuration.getRootLogger().getPropertyList())
{
...
}
Aber das ergibt eine Nullpointer weil getPropertyList null zurückgibt.
Also, wie kann ich auf die Eigenschaft mit dem Namen "BaseDir" zugreifen, so dass ich programmgesteuert einen neuen Logger erstellen kann, aber mit einem anderen Basisverzeichnis?
Es funktioniert nicht für mich. https://StackOverflow.com/questions/46581587/log4j2-xml-define-jdbc-appender-and-pass-property-from-xml-configuration – AleMar