浅谈SpringBoot对日志框架的使用

    xiaoxiao2022-07-04  162

            java领域存在多种日志框架,目前常用的日志框架包括Log4j,Log4j 2,Commons Logging,Slf4j,Logback,Jul等等。居于性能的考虑,日志的抽象层我选择SLF4j,日志实现我选择Logback。

           首先,少了不JAR包

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

    日志级别由高到低,代码如下:

    //记录器 Logger logger = LoggerFactory.getLogger(getClass()); @Test public void contextLoads() { //System.out.println(); //日志的级别; //由低到高 trace<debug<info<warn<error //可以调整输出的日志级别;日志就只会在这个级别以以后的高级别生效 logger.trace("这是trace日志..."); logger.debug("这是debug日志..."); //SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root级别 logger.info("这是info日志..."); logger.warn("这是warn日志..."); logger.error("这是error日志..."); }

    配置日志的输出格式及日志文件的保存路径

    logging.level.com.jalor=trace #spring.profiles.active=dev #logging.path= # 不指定路径在当前项目下生成springboot.log日志 # 可以指定完整的路径; #logging.file=G:/springboot.log # 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用?spring.log 作为默认文件 logging.path=/spring/log # 在控制台输出的日志的格式 logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n # 指定文件中日志输出的格式 logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== %msg%n

    应该需求及场景,需要在不同环境下按照不同的格式输出日志。此时,需要我们开发人员自己定义logback.xml配置文件来指定,但程序启动时logback.xml将被日志框架所识别,并无法Profile高级功能。建议命名为logback-spring.xml,必需包含logback关键字,代码片段如下:

    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <!-- 日志输出格式: %d表示日期时间, %thread表示线程名, %-5level:级别从左显示5个字符宽度 %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 %msg:日志消息, %n是换行符 --> <layout class="ch.qos.logback.classic.PatternLayout"> <springProfile name="dev"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern> </springProfile> <springProfile name="!dev"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern> </springProfile> </layout> </appender>

    说到这里,可能有人会问profile为何物,我们简单回顾一下。

    一个SpringBoot项目从开发到最终的发布基本上都会有几个环境,开发环境dev、测试环境test、生产环境etc。每切换一个环境我们就要在application.properties中修改配置,这样会很麻烦。因此,我们需要准备多个application.properties文件,例如:application-dev.properties、application-test.properties、application-etc.properties等。每个*.properties文件都有自己的配置,那如何切换呢?在application.properties中配置如下代码。

    spring.profiles.active=dev

    浅谈至此,如有疑问请留言,谢谢!

    更多更全案例,百度一下:

    嘉乐博客系统

    www.syjalor.com

    www.blog.syjalor.com

    最新回复(0)