咨询:Java中Slf4j的log.info日志无法在控制台显示如何解决?
解决@Slf4j的log.info无法在控制台输出的问题
从你的代码来看,你用了Lombok的@Slf4j注解注入日志,但控制台没输出log.info内容,大概率是日志级别未配置正确或者代码未被实际执行,下面一步步排查解决:
1. 先确认代码是否真的被执行到
先排除最基础的问题:你的transform()方法有没有被触发调用?
- 检查
TTD类是否在Spring的扫描范围内(比如包路径是否包含在@SpringBootApplication的扫描路径里) - 确认有没有通过Controller、定时任务或其他组件调用
transform()方法,比如如果这是接口实现,有没有发送请求触发它 - 可以临时在方法开头加一行
System.out.println("transform方法执行了"),先验证方法是否被执行——如果这个都不输出,问题出在方法未被调用,和日志本身无关
2. 配置日志级别(核心解决步骤)
Spring Boot默认日志级别是WARN及以上,INFO级别日志默认不会输出到控制台,你需要显式配置:
方式一:通过application.properties/application.yml配置(推荐)
如果是Spring Boot项目,在src/main/resources的配置文件中添加:
# 针对你的TTD类单独开启INFO级别日志 logging.level.com.yourpackage.TTD=INFO # 或者全局开启INFO级别(所有类的INFO日志都输出) logging.level.root=INFO
注意把com.yourpackage替换成TTD类实际所在的包路径。
如果用yml格式:
logging: level: com.yourpackage.TTD: INFO root: INFO
方式二:用日志框架配置文件(比如logback.xml)
如果项目用logback(Spring Boot默认日志框架),可以在src/main/resources下创建logback.xml,配置ConsoleAppender并设置级别:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="CONSOLE"/> </root> <!-- 也可以单独给TTD类设置日志级别 --> <logger name="com.yourpackage.TTD" level="INFO"/> </configuration>
3. 检查Lombok的配置是否正确
确保你的IDE已经安装了Lombok插件,并且项目依赖中已引入Lombok:
Maven依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
Gradle依赖:
compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok'
如果没装插件,IDE可能无法识别@Slf4j,导致日志对象未正确注入。
4. 测试验证
配置完成后重启项目,触发transform()方法,应该就能在控制台看到log.info("String is:"+str1)的输出了。如果还是没效果,可以尝试把日志级别改成DEBUG,看是否有更多排查信息。
内容的提问来源于stack exchange,提问作者san




