美文网首页
spring boot 日志

spring boot 日志

作者: Nick_4438 | 来源:发表于2018-09-11 23:06 被阅读0次

    日子样例

    2014-03-05 10:57:51.112  INFO 45469 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.52
    2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1358 ms
    2014-03-05 10:57:51.698  INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
    2014-03-05 10:57:51.702  INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
    

    日志输出含义如下:

    • 日期时间,精确到ms
    • 日志级别: ERROR, WARN, INFO, DEBUG, or TRACE.
    • 进程id.
    • 使用一个符号---把真实消息和消息头分开;
    • 线程名字.
    • 日志名称,通常是类名字;
    • 日志内容

    引入日志

    添加如下依赖可以引入日志。

      <dependencies>
            <!--使用注解@Slf4j代替 private  final Logger logger = LoggerFactory.getLogger(XXX.class); -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <!--spring-boot-starter其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架-->
            <!--logback。工程中有用到了Thymeleaf,而Thymeleaf依赖包含了spring-boot-starter,最终我只要引入Thymeleaf即可。-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    

    简单介绍

    日志级别

    • 分类如下:
    TRACE < DEBUG < INFO < WARN < ERROR < FATAL
    
    • 日志级别可以通过以下2总方式定义
      • 在运行命令后加入--debug标志,如:java -jar test.jar --debug
      • 在application.properties中配置debug=true,该属性置为true的时候,核心Logger(包含嵌入式容器、hibernate、spring)会输出更多内容,但是你自己应用的日志并不会输出为DEBUG级别。

    文件输出

    默认情况下,springboot 只输出日志到控制台,如果需要额外输出文件到日志文件中,需要配置logging.file或者logging.path 属性 (application.properties、application.yml).

    下表是相关的属性:

    logging.file logging.path Example Description
    (none) (none) Console only logging.
    Specific file (none) my.log Writes to the specified log file. Names can be an exact location or relative to the current directory.
    (none) Specific directory /var/log Writes spring.log to the specified directory. Names can be an exact location or relative to the current directory.

    日志默认到10MB之后就开始分割文件,可以修改logging.file.max-size属性修改该值. 保存历史文件个数可以通过修改logging.file.max-history配置.

    所有的包可以单独设置日志等级,设置方法如下:

    logging.level.root=WARN
    logging.level.org.springframework.web=DEBUG
    logging.level.org.hibernate=ERROR
    

    设置logback

    默认的日志控制只能做简单的控制,如果需要做复杂控制需要自定义日志配置。

    • 修改application.yml文件
    logging:
      config: classpath:logback-spring.xml
    
    • 修改src/main/resources/logback-spring.xml文件
    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration scan="true" scanPeriod="60 seconds" debug="false">
    
        <include resource="org/springframework/boot/logging/logback/defaults.xml" />
        <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
        <property name="LOG_HOME" value="./log" />
    
        <!-- 彩色日志 -->
        <!-- 彩色日志依赖的渲染类 -->
        <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
        <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
        <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
        <!-- 彩色日志格式 -->
        <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
        <!-- Console 输出设置 -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder charset="UTF-8">
                <!--  显示毫秒数
                    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>-->
                <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            </encoder>
        </appender>
        <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--日志文件输出的文件名-->
                <FileNamePattern>${LOG_HOME}/web.%d{yyyy-MM-dd}.log</FileNamePattern>
                <!--日志文件保留天数-->
                <MaxHistory>30</MaxHistory>
            </rollingPolicy>
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MB</MaxFileSize>
            </triggeringPolicy>
            <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>
        </appender>
        <!-- * 通配符 设置log打印级别 对所有类有效TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF-->
        <!--将上面的appender添加到root-->
        <root level="INFO">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
        <logger name="com.boot" level="DEBUG"></logger>
        <!--<!–日志异步到数据库 –>-->
        <!--<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">-->
        <!--<!–日志异步到数据库 –>-->
        <!--<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">-->
        <!--<!–连接池 –>-->
        <!--<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">-->
        <!--<driverClass>com.mysql.jdbc.Driver</driverClass>-->
        <!--<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>-->
        <!--<user>root</user>-->
        <!--<password>root</password>-->
        <!--</dataSource>-->
        <!--</connectionSource>-->
        <!--</appender>-->
    </configuration>
    

    相关文章

      网友评论

          本文标题:spring boot 日志

          本文链接:https://www.haomeiwen.com/subject/ueupgftx.html