Custom Plugin wird in EAR mit log4j2 API nicht erkannt
Ich migriere eine EAR-Anwendung vonlog4j
zulog4j2
. Ich hatte Klassen, in denen Appender, Filter und Layouts in verschiedenen EAR-Gläsern erweitert wurden, und jetzt habe ich diese in Plugins konvertiert. Das bedeutet, ich habe benutzerdefinierte Plugins in mehr als einem Jar (angenommen 3 Jar).
Ich benutze nichtpackages
Attribut inlog4j2.xml
und initialisiere das Protokollierungssystem mitDlog4j.configurationFile
JVM Argument auflog4j2.xml
location inMETA-INF
von EAR.
Das Hinzufügen des folgenden Plugins in allen drei JAR-Projekten hat nicht funktioniert.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>log4j-plugin-processor</id>
<goals>
<goal>compile</goal>
</goals>
<phase>process-classes</phase>
<configuration>
<proc>only</proc>
<annotationProcessors>
<annotationProcessor>org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor</annotationProcessor>
</annotationProcessors>
</configuration>
</execution>
</executions>
</plugin>
Musterlayout: Im folgenden Musterlayout iste
ist das benutzerdefinierte Muster, in das ein benutzerdefiniertes Musterkonvertierungs-Plugin geschrieben wurde, um diese Zeichenfolge zu konvertieren.
<Pattern>%d %-5p [%c{1}] [EventId: %e] [%t] %m%n</Pattern>
Custom Converter Plugin für das obige Pattern Layout (in jar1):
jar1 hatLog4J2Plugins.dat
Datei unterMETA-INF
imorg.apache..
Mappe
@Plugin(name = "EventPatternConverter", category = "Converter")
@ConverterKeys({"e"})
public class EventPatternConverter extends LogEventPatternConverter {
protected EventPatternConverter(String name, String style) {
super(name, style);
}
public static EventPatternConverter newInstance(String[] options) {
return new EventPatternConverter("e", "e");
}
@Override
public void format(LogEvent event, StringBuilder toAppendTo) {
String eventId= "";
// Append empty string (OR) value
toAppendTo.append(eventId);
}
}
Aber ich erhalte den folgenden Fehler
ERROR Unrecognized format specifier [e]
Sogar keines der benutzerdefinierten Plugins wird als "Ich erhalte" identifizierinvalid element
für den Rest der benutzerdefinierten Plugins, die alle in jar2, jar3 verfügbar sind und alle @ habLog4J2Plugins.dat
Datei
ERROR File contains an invalid element or attribute "TestFilter"
Ich benutzelog4j-api-2.4.jar
, log4j-core-2.4.jar
, log4j-jcl-2.4.jar
, log4j-web-2.4.1.jar
, commons-logging-1.1.1.jar
Gläser in der EAR.
Ich habe ein benutzerdefiniertes Musterkonverter-Plugin definiert und erwarte, dass dieser Konverter auf alle Musterlayouts angewendet wird, einschließlich des mit @ definierten Standardmusterlayout<patternlayout>
. Ist das richtig
Wenn ja, helfen Sie mir bitte, wenn jemand mit diesem Problem konfrontiert ist, und leiten Sie mich, wenn ich bei der Definition des benutzerdefinierten Plugins falsch liege, da sie alle nicht von EAR-Gläsern erkannt werden.