[ https://issues.apache.org/jira/browse/LOG4J2-746?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14074350#comment-14074350 ]
Remko Popma commented on LOG4J2-746: ------------------------------------ The packages attribute in the {{<Configuration>}} element no longer works since 2.0-rc2 and 2.0. This will be fixed in the next maintenance release. LOG4J2-741 is tracking this issue. Meanwhile, you can try to build your custom plugin with Maven. There is an annotation processor in log4j-core that will (should?) run during the build and will generate a metadata file for your custom plugins in your jar file. When log4j2 starts it will look for the metadata file in all jar files and quickly discover all available plugins. Note that the annotation processor may not work correctly when building from an IDE. It is safest to build with Maven, Ant or plain javac. > Custom Appender > --------------- > > Key: LOG4J2-746 > URL: https://issues.apache.org/jira/browse/LOG4J2-746 > Project: Log4j 2 > Issue Type: Bug > Components: Appenders > Affects Versions: 2.0 > Environment: Windows 7 (x64), Java 7, Tomcat 7 > Reporter: Radek Miazio > Labels: appender, configuration > > I want to configure > [Sentry|https://github.com/getsentry/raven-java/tree/master/raven-log4j2] to > to be working with log4j2. > To do that I need to add sentry appender to log4j2.xml file. > Actually it does not differ from configuring custom appender. > Manual page suggests that I need to add package with the appender to > "packages" attribute of Configuration element: > http://logging.apache.org/log4j/2.x/manual/configuration.html#ConfigurationSyntax > My log4j2.xml file looks like this: > {code} > <Configuration status="trace" packages="net.kencochrane.raven.log4j2"> > <Appenders> > <Console name="Console" target="SYSTEM_OUT"> > <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level > %logger{36} - %msg%n" /> > </Console> > <Raven name="Sentry"> > <dsn> > https://publicKey:secretKey@host:port/1?options > </dsn> > </Raven> > </Appenders> > <Loggers> > <Root level="error"> > <AppenderRef ref="Console" /> > <AppenderRef ref="Sentry" /> > </Root> > </Loggers> > </Configuration> > {code} > Package 'net.kencochrane.raven.log4j2' contains a class that extends > 'org.apache.logging.log4j.core.appender.AbstractAppender'. > However, looks like it is completely ignored. > After some digging, I found out, that PluginManager uses already defined list > of existing plugins, which is available within binary file > (/log4j-core-2.0.jar!/META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat) > and "packages" attribute actually doesnt do anything, becuase the only thing > that XmlConfiguration does with its value is: > {code} > PluginManager.addPackage(p); > {code} > but the method is deprecated and empty: > {code} > /** > * Adds a package name to be scanned for plugins. Must be invoked prior > to plugins being collected. > * @param p The package name. > */ > @Deprecated // no more need for this method due to PluginProcessor > public static void addPackage(final String p) { > } > {code} > As you can see, Javadoc points to PluginProcessor, which actually should > create proper binary file based on Plugin annotation. However putting a > breakpoint in 'process' method showed that it is not invoked during the log4j > initialization. > Similar issue was already reported and resolved > https://issues.apache.org/jira/browse/LOG4J2-95 > but looks like problem came up again, and suggestes workaround dont work > anymore. > What should I do to force PluginProcessor create Log4j2Plugins.dat file again? -- This message was sent by Atlassian JIRA (v6.2#6252) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org