您的位置:首页 > 游戏 > 游戏 > 嵌入式软件开发公司_网站定制公司排行榜_查排名的软件有哪些_网站怎么优化

嵌入式软件开发公司_网站定制公司排行榜_查排名的软件有哪些_网站怎么优化

2025/4/18 16:56:12 来源:https://blog.csdn.net/yezonggang/article/details/146980416  浏览:    关键词:嵌入式软件开发公司_网站定制公司排行榜_查排名的软件有哪些_网站怎么优化
嵌入式软件开发公司_网站定制公司排行榜_查排名的软件有哪些_网站怎么优化

目录

 默认日志框架

日志配置

更换日志框架

排除默认Logback

引入目标日志框架

添加配置文件

 logback.xml


SpringBoot的核心设计宗旨是约定大于配置,很多框架功能都给你默认加载和配置完成供你使用,但这就要求使用者对框架有一定的理解和改造能力,比如这个日志框架,是其他框架的基础,需要默认指定日志框架,但如果想要深入了解日志框架内容是很多的,比如logback 和 log4j 都是基于 SLF4J(Simple Logging Facade for Java) 的门面(Facade)设计模式进行集成的。

  • logback是 SLF4J 的原生实现框架,由 SLF4J 的作者设计,与 SLF4J 无缝集成,是SLF4J 的“亲儿子”,集成更紧密;
  • log4j 不是原生支持 SLF4J,需要通过 桥接器(Bridge) 实现适配

 默认日志框架

Spring Boot 默认使用Logback作为日志框架,通过spring-boot-starter-logging实现自动配置。该依赖会被其他Starter(如spring-boot-starter-web)隐式引入。

若未在application.ymlapplication.properties中配置日志,Spring Boot会使用以下默认值:

  • 日志级别:Root日志级别默认为INFO

  • 输出目标:日志仅输出到控制台(不写入文件)。

  • 格式

  • 时间戳 | 日志级别 | 进程ID | 线程名 | Logger名称 | 日志消息
    示例:
    2023-10-05 14:30:00.123  INFO 12345 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080

日志配置

application.yml中的常用配置:

logging:file:name: app.log      # 日志文件名(默认生成在项目根目录)path: /var/log       # 日志目录(与`file.name`二选一)level:root: INFO         # Root日志级别org.springframework.web: DEBUG  # 指定包日志级别pattern:console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n"file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n"

若需详细的springboot启动日志(如Bean加载过程),可通过以下方式配置:

方式1:通过启动参数
在启动命令中添加--debug参数,仅打印Spring Boot核心调试日志:
java -jar your-app.jar --debug方式2:全局DEBUG日志
在application.yml中设置Root日志级别为DEBUG:
logging:level:root: DEBUG方式3:特定包日志
若仅需查看Spring容器的初始化日志:
logging:level:org.springframework.boot: DEBUGorg.springframework.context: DEBUG

更换日志框架

Spring Boot支持快速切换至其他日志框架(如Log4j2),需以下步骤:

排除默认Logback

在Maven的pom.xml中排除spring-boot-starter-logging: 

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>

引入目标日志框架

以Log4j2为例,添加对应Starter:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

添加配置文件

src/main/resources目录下创建日志配置文件:

  • Log4j2log4j2.xmllog4j2-spring.xml

  • 示例配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/></Root></Loggers>
</Configuration>

 logback.xml

Spring Boot 默认在 classpath 下查找 logback.xml,如果存在,会直接使用它作为 Logback 的配置,logback.xml 的优先级 高于 Spring Boot 的默认日志配置(如 application.yml 中的 logging 配置项),如果同时存在 logback.xml 和 application.yml 中的日志配置,logback.xml 的配置会覆盖 application.yml

如果希望完全由 logback.xml 控制日志行为,可以在 application.yml 中禁用 Spring Boot 的默认日志配置:logging:  config: none  # 禁用所有默认日志配置

在 src/main/resources 目录下新建 logback.xml,例如:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 定义控制台输出 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 定义文件输出 --><appender name="FILE" class="ch.qos.logback.core.FileAppender"><file>app.log</file><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- Root 日志级别 --><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/></root><!-- 特定包的日志级别 --><logger name="org.springframework.web" level="DEBUG"/>
</configuration>

 虽然 logback.xml 会被自动加载,但 Spring Boot 官方推荐使用 logback-spring.xml,原因如下:

配置文件特点
logback.xml直接由 Logback 加载,无法使用 Spring Boot 的增强功能(如 Profile 多环境支持)。
logback-spring.xml由 Spring Boot 加载,支持 Profile 条件化配置(如 <springProfile> 标签)。
<configuration><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 开发环境:输出 DEBUG 级别到控制台 --><springProfile name="dev"><root level="DEBUG"><appender-ref ref="CONSOLE"/></root></springProfile><!-- 生产环境:输出 INFO 级别到文件 --><springProfile name="prod"><root level="INFO"><appender-ref ref="FILE"/></root></springProfile>
</configuration>

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com