如何在Kotlin KSP处理器中打印日志?
在Kotlin KSP中输出日志的两种方法
在KSP里调试处理器时,println的输出不会直接显示在常规控制台,而是输出到Gradle构建日志中。不过更推荐用KSP官方提供的Logger工具打日志,更规范且便于控制级别,具体操作如下:
方法一:使用KSP官方Logger(推荐)
注入Logger到处理器
修改你的SymbolProcessorProvider,从SymbolProcessorEnvironment中获取Logger并传给处理器:class ListedProcessorProvider : SymbolProcessorProvider { override fun create(env: SymbolProcessorEnvironment): SymbolProcessor { return ListedProcessor(env.logger, env.codeGenerator) } }在处理器中使用Logger
更新处理器构造函数接收Logger参数,然后用不同级别方法输出日志:internal class ListedProcessor( private val logger: Logger, private val fileGenerator: FileWriter, ) : SymbolProcessor { override fun process(resolver: Resolver): List<KSAnnotated> { logger.info("开始处理Listed和Arrayed注解") val listedFunctions = resolver.findAnnotations(Listed::class).toList() logger.info("找到${listedFunctions.size}个标记@Listed的方法") val arrayedFunctions = resolver.findAnnotations(Arrayed::class).toList() logger.info("找到${arrayedFunctions.size}个标记@Arrayed的方法") val invalidElements = (listedFunctions + arrayedFunctions).filterNot { it.validate() } if (invalidElements.isNotEmpty()) { logger.warn("发现${invalidElements.size}个无效注解元素") } return invalidElements.toList() } }查看日志
- Android Studio中打开底部的「Gradle」标签页,运行构建任务即可看到日志;
- 终端执行
./gradlew assembleDebug --info命令,可查看更详细的分级日志。
方法二:使用println查看输出
如果暂时不想改代码,println的内容也能找到:
- 在Android Studio的「Gradle」控制台中,运行构建任务即可看到输出;
- 终端执行构建命令时添加
--info参数(如./gradlew build --info),println的内容会混杂在构建日志里。
注意:KSP处理器运行在编译阶段,日志不会出现在App的Logcat中,仅会输出到Gradle构建日志内。
内容的提问来源于stack exchange,提问作者Elye
相关产品推荐
相关产品推荐

