You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin-logging是否支持自定义任意日志名称?如何实现?

Kotlin-logging自定义日志名称问题解答

结论

Kotlin-logging完全允许指定任意自定义日志名称,之前日志失效的原因并非API用法错误,而是Logback配置未对自定义名称的日志器启用输出。

问题根源

你的Logback配置仅对默认的类/包级日志器(通过KotlinLogging.logger {}自动生成的、关联当前类全限定名的日志器)生效,但自定义名称的日志器(如"FOO")未被配置日志级别和输出目标,导致日志被过滤或无输出渠道。

解决步骤

1. 修改Logback配置文件(logback.xml)

在配置中添加针对自定义日志名称的日志器规则,确保它能输出到控制台:

<!-- 保持原有的控制台appender配置不变 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm} %-5level %logger - %msg%n</pattern>
    </encoder>
</appender>

<!-- 为自定义日志名称"FOO"配置日志输出 -->
<logger name="FOO" level="INFO" additivity="false">
    <appender-ref ref="CONSOLE"/>
</logger>

<!-- 根日志器配置(保留原有即可) -->
<root level="INFO">
    <appender-ref ref="CONSOLE"/>
</root>
  • level="INFO":指定该日志器输出INFO及以上级别的日志,可根据需求调整为DEBUG、WARN等。
  • additivity="false":防止该日志器的日志同时输出到根日志器(避免重复打印),若需要双重输出可设为true。

2. 正确使用自定义日志名称的写法

以下两种写法都是有效的,配置完成后即可正常输出日志:

// 直接使用Kotlin-logging的API指定名称
val log = KotlinLogging.logger("FOO")

// 通过SLF4J LoggerFactory转换为KLogger
val log = LoggerFactory.getLogger("FOO").toKLogger()

验证说明

  • 调整配置后,自定义名称的日志器会按照配置的级别输出到控制台,不会再出现失效情况。
  • 应用中其他原有日志功能不受影响,因为根日志器和类级日志器的配置依然生效。

内容的提问来源于stack exchange,提问作者user891203

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:18:28