Tag: log4j2

Buildertypes的生成器? 如何把这个翻译成kotlin?

我正要将一些java代码移植到kotlin。 我刚刚发现了一些尴尬的工厂方法,它看起来非常直接的转变: import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.appender.SyslogAppender; public class Test { public Appender getSyslogAppender(String id, String host, int port, boolean immediateFlush, boolean newLine) { return SyslogAppender.newSyslogAppenderBuilder() .setId(id) .setNewLine(newLine) .withHost(host) .withPort(port) .withImmediateFlush(immediateFlush) .build(); } } 所以我的第一个尝试是: fun getSyslogAppender(id: String, host: String, port: Int, immediateFlush: Boolean, newLine: Boolean): Appender { return SyslogAppender.newSyslogAppenderBuilder() .setId(id) .setNewLine(newLine) .withHost(host) .withPort(port) .withImmediateFlush(immediateFlush) .build() […]

用辅助方法封装获得方法的名字

出于调试的目的,我的代码中有一部分我想记录一个方法的名字,如下所示: val LOG = LogManager.getLogger(SomeClass::class.java.name) //… fun someMethod() { LOG.debug(Thread.currentThread().getStackTrace()[1].getMethodName()) 我怎么能把这个作为一个简单而清晰的表达? 就像是: LOG.debug(getMethodName()) 顺便说一下,我尝试过使用AspectJ,但是我使用Eclipse,Kotlin插件与1.1.1一起使用。 AspectJ将需要KAPT(据我所知),它不适用于1.1.1的Maven(我也在使用它)。

用lambda参数记录kotlin

在log4j2中,我们有一个方便的功能,被描述为 // Java-8 style optimization: no need to explicitly check the log level: // the lambda expression is not evaluated if the TRACE level is not enabled logger.trace("Some long-running operation returned {}", () -> expensiveOperation()); 我试图在kotlin中使用它 log.debug("random {}", { UUID.randomUUID() }) 将打印 random Function0<java.util.UUID> 我们如何使用kotlin使用lambda参数记录? 或者我们如何明确地告诉科特林要调用什么方法?