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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage