[ https://issues.apache.org/jira/browse/LOG4J2-1741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15761152#comment-15761152 ]
Mikael Ståldal commented on LOG4J2-1741: ---------------------------------------- The problem is that you have put the @PluginFactory annotation on the object, and not on the {{createAppender}} method. If you change it like this, it will work: {code} object KafkaLog4jAppender { @PluginFactory def createAppender( @PluginAttribute("name") name: String, @PluginElement("Layout") layout: Layout[_ <: Serializable], @PluginElement("Filters") filter: Filter): KafkaLog4jAppender = { new KafkaLog4jAppender(name, filter, layout) } } {code} > scala: add support for creating custom plugins > ---------------------------------------------- > > Key: LOG4J2-1741 > URL: https://issues.apache.org/jira/browse/LOG4J2-1741 > Project: Log4j 2 > Issue Type: Improvement > Components: Plugins > Reporter: PJ Fanning > Assignee: Mikael Ståldal > Labels: scala > Attachments: log4j2-sample.zip > > > I tried to add a custom appender using Scala but the pattern of having a > class with an Plugin annotation and a static method on that class with a > PluginFactory or PluginBuilderFactory annotation doesn't seem to work in > Scala. > In Scala, you can create a companion object to a class where you can > implement the equivalent of static methods but these are not the same class > under the hood. The Scala compiler builds 2 or more classes, the companion > object gets a class name with a $ appended to it. I think this is affecting > the lookup for the method with the Factory annotation. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org