Spring Boot启动时如何用Log4j记录嵌入式服务器端口?
Spring Boot本身就会在启动时输出嵌入式服务器的端口日志,对应的日志类别会根据你使用的服务器类型略有区别,下面分场景给你说明:
1. Tomcat 服务器
对应的日志类别是 org.springframework.boot.web.embedded.tomcat.TomcatWebServer,它会输出类似这样的日志:
Tomcat started on port 8080 (http) with context path ''
2. Jetty 服务器
对应的日志类别是 org.springframework.boot.web.embedded.jetty.JettyWebServer,输出内容示例:
Jetty started on port 8080 (http/1.1) with context path ''
3. Undertow 服务器
对应的日志类别是 org.springframework.boot.web.embedded.undertow.UndertowWebServer,输出内容示例:
Undertow started on port 8080 (http) with context path ''
配置Log4j确保这些日志输出
默认情况下Spring Boot的日志配置已经会输出这些信息,但如果你自定义了Log4j配置,可能需要手动指定这些Logger的级别,确保日志能正常打印。下面给你两种常见配置文件的示例:
Log4j2 XML 配置示例
<Loggers> <!-- 配置Tomcat服务器日志输出 --> <Logger name="org.springframework.boot.web.embedded.tomcat.TomcatWebServer" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <!-- 如果需要输出到文件,添加你的文件Appender --> <AppenderRef ref="FileAppender"/> </Logger> <!-- 若使用Jetty,替换成下面的配置 --> <!-- <Logger name="org.springframework.boot.web.embedded.jetty.JettyWebServer" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="FileAppender"/> </Logger> --> <!-- 若使用Undertow,替换成下面的配置 --> <!-- <Logger name="org.springframework.boot.web.embedded.undertow.UndertowWebServer" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="FileAppender"/> </Logger> --> <Root level="INFO"> <AppenderRef ref="Console"/> </Root> </Loggers>
Log4j Properties 配置示例
# Tomcat服务器日志配置 log4j.logger.org.springframework.boot.web.embedded.tomcat.TomcatWebServer=INFO, Console, FileAppender log4j.additivity.org.springframework.boot.web.embedded.tomcat.TomcatWebServer=false # Jetty服务器日志配置(替换上面的Tomcat配置即可) # log4j.logger.org.springframework.boot.web.embedded.jetty.JettyWebServer=INFO, Console, FileAppender # log4j.additivity.org.springframework.boot.web.embedded.jetty.JettyWebServer=false # Undertow服务器日志配置(替换上面的Tomcat配置即可) # log4j.logger.org.springframework.boot.web.embedded.undertow.UndertowWebServer=INFO, Console, FileAppender # log4j.additivity.org.springframework.boot.web.embedded.undertow.UndertowWebServer=false # 根日志级别配置 log4j.rootLogger=INFO, Console
小提示
这些日志的默认级别是INFO,所以只要你的根日志级别或者对应Logger的级别不高于INFO(比如设为DEBUG也没问题),就能正常输出。如果是多环境项目,还可以根据开发/生产环境调整日志级别,灵活度很高。
内容的提问来源于stack exchange,提问作者user2599052

