Trying to extend logging logic in my Kotlin project. Added converter for logs:
@Plugin(name = "TestConverter", category = "Converter")
@ConverterKeys("m")
class TestConverter(name: String, style: String) : LogEventPatternConverter(name, style) {
companion object {
@JvmStatic
fun newInstance(options: Array<String>): TestConverter = TestConverter("test", Thread.currentThread().name)
}
override fun format(event: LogEvent?, toAppendTo: StringBuilder?) {
...
}
}
But seems like that log4j does not see Kotlin class with @Plugin annotation. I tried add packages in configuration explicitly, but did not help. The problem could also be with annotation processing for Kotlin, but not really sure if it is related.
Same class in Java works perfectly.
Any ideas/suggestions what is going wrong?
Thanks!
UPD adding log4j.xml
log4j.xml is quite standard
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${env:CONSOLE_LOG_PATTERN:-%d %p %c [%t] %X %m%n}"/>
</Console>
</Appenders>
<Loggers>
<Logger name="test" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
I tried to specify package to scan <Configuration packages="com.test">
but it didn't help. And also as I mentioned - Java class with the same configuration works perfectly.