SpringBoot 日志

SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可

日志的基本使用

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

通过SpringBoot的全局配置文件修改日志的默认配置

#指定相应区域的日志级别
logging.level.com.margin=trace
#在对应的日志文件中添加日志,没有文件进行创建,可以指定路径,不指定磁盘默认为本磁盘,不指定路径默认为本项目下,需要指定文件名
#在本项目下创建springboot.log日志文件
logging.file.name=springboot.log
#在对应的日志文件中添加日志,没有文件进行创建,需要指定路径,不指定磁盘默认为本磁盘,创建的日志文件名默认为spring.log,与logging.file.name同时存在不执行
#在本磁盘根目录下创建springboot文件夹,在springboot文件夹中创建log文件在,在log文件夹中创建spring.log日志文件
logging.file.path=/springboot/log
#指定在控制台输出的格式
logging.pattern.console=%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level [%thread][LoggerTest.testClassInfo :30][%logger{0}] %m%n
#指定在文件中输出的格式
logging.pattern.file=%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level [%thread][LoggerTest.testClassInfo :30][%logger{0}] %m%n

日志输出格式:

%d:表示日期时间,
%thread:表示线程名,
%-5level:表示级别从左显示5个字符宽度
%logger{50}:表示logger名字最长50个字符,否则按照句点分割。 
%msg:表示日志消息,
%n:表示换行符

在类路径下放上每个日志框架自己的配置文件可以替换SpringBoot对日志框架的默认配置

Logbacklogback-spring.xml, logback-spring.groovy , logback.xml or logback.groovy
Log4j2log4j2-spring.xml or log4j2.xml
JDK (Java Util Logging)logging.properties

logback.xml:直接被日志框架识别了;
logback-spring.xml:日志框架不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot的高级Profile功能

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
     <layout class="ch.qos.logback.classic.PatternLayout">
	<!--springProfile,判断开发环境,在自定义的dev环境下执行-->
        <springProfile name="dev">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
        </springProfile>
        <!--在非自定义的dev环境下执行-->
        <springProfile name="!dev">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern>
        </springProfile>
    </layout>
</appender>

日志框架配置文件示例

<?xml version="1.0" encoding="UTF-8"?>
<!--logback.xml被日志框架直接识别-->
<!--logback-spring.xml不被日志框架直接识别,由spring boot解析日志配置,可以使用spring boot的高级Profile功能-->

<configuration debug="false">

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->

    <property name="LOG_HOME" value="/home" />

    <!-- 控制台输出 -->

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <!-- springProfile,判断开发环境,logback-spring.xml才能使用-->
<!--            <springProfile name="dev">-->
<!--                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<!--            </springProfile>-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>

    </appender>

    <!-- 按照每天生成日志文件 -->

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!--日志文件输出的文件名-->

            <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>

            <!--日志文件保留天数-->

            <MaxHistory>30</MaxHistory>

        </rollingPolicy>

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->

            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>

        </encoder>

        <!--日志文件最大的大小-->

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

            <MaxFileSize>10MB</MaxFileSize>

        </triggeringPolicy>

    </appender>



    <!-- 日志输出级别 -->

    <root level="INFO">

        <appender-ref ref="STDOUT" />

    </root>

</configuration>

日志切换

<!--slf4j+log4j-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <exclusion>
      <artifactId>logback-classic</artifactId>
      <groupId>ch.qos.logback</groupId>
    </exclusion>
    <exclusion>
      <artifactId>log4j-over-slf4j</artifactId>
      <groupId>org.slf4j</groupId>
    </exclusion>
  </exclusions>
</dependency>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
</dependency>
<!--切换为log4j2-->
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>spring-boot-starter-logging</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
        </dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值