El complemento personalizado no se detecta en EAR con log4j2 API
Estoy migrando una aplicación EAR delog4j
alog4j2
. Tuve clases extendiendo apéndices, filtros, diseños en diferentes frascos de EAR y ahora, los he convertido en complementos. Esto significa que tengo complementos personalizados en más de un frasco (supongamos 3 frascos).
No estoy usandopackages
atributo enlog4j2.xml
y estoy inicializando el sistema de registro utilizandoDlog4j.configurationFile
Argumento de JVM que apunta alog4j2.xml
ubicación enMETA-INF
de EAR.
Agregar el complemento a continuación en los tres proyectos jar no funcionó.
<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>
Diseño del patrón: En el diseño del patrón a continuación,e
es el patrón personalizado donde se escribe un complemento convertidor de patrones personalizados para convertir esta cadena.
<Pattern>%d %-5p [%c{1}] [EventId: %e] [%t] %m%n</Pattern>
Complemento convertidor personalizado para el diseño del patrón anterior (en jar1):
jar1 tieneLog4J2Plugins.dat
archivo bajoMETA-INF
enorg.apache..
carpeta.
@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);
}
}
Pero recibo el siguiente error
ERROR Unrecognized format specifier [e]
Incluso, ninguno de los complementos personalizados se identifica como estoy obteniendoinvalid element
para el resto de los complementos personalizados que están disponibles en jar2, jar3 y todos tienenLog4J2Plugins.dat
archivo.
ERROR File contains an invalid element or attribute "TestFilter"
estoy usandolog4j-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
tarros en la oreja.
He definido un complemento convertidor de patrones personalizado y espero que este convertidor se aplique a todos los diseños de patrones, incluido el diseño de patrones predeterminado definido usando<patternlayout>
. Es esto correcto ?
En caso afirmativo, ayude si alguien se enfrentó a este problema y guíeme si me equivoco al definir el complemento personalizado, ya que no todos se detectan desde los frascos en EAR.