开发者

SpringCloud使用logback日志框架教程详解

目录
  • 前言
  • 一.依赖引入
  • 二.logback-spring.XML配置
    • 其中要修改配置的地方:
  • 三.配置文件application.properties所需配置
    • 1.配置文件中声明项目名称:
    • 2.可以根据不同的配置文件,决定是不是要打印MyBATis日志,配置如下:
      • ①.关闭生产Mybatis日志
      • ②.打开开发、测试环境Mybatis日志
  • 四.如果想让开发、测试、生产等环境共用一套logback配置,可使用logback.xml:
    • 五.如何高效的使用log.debug()打印日志
      • 总结

        前言

        Logback是一个功能强大的日志框架,它是一个基于slf4j的日志系统,提供了可靠的日志服务,比log4j更快,更灵活,更容易使用。它可以定义日志消息的输出格式,支持灵活的日志输出,支持多种日志文件格式,支持按时间和大小分割日志等功能。本文将教会你快速让你的项目集成logback日志框架。

        开发者_JAVA

        一.依赖引入

        如果项目是spring web项目,并且已经引入了下面依赖,可以直接使用:

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

        如果你的项目不是web应用,则可以引入依赖:

        <properties>
            <logback.version>1.1.11</logback.version>
        </properties>
        
        &jslt;dependency>
            <groupId>ch.qos.logback</groupId>
        	<artifactId>logback-Access</artifactId>
        	<version>${logback.version}</version>
        </dependency>
        <dependency>
        <groupId>ch.qos.logback</groupId>
        	<artifactId>logback-classic</artifactId>
        	<version>${logback.version}</version>
        	</dependency>
        <dependency>
        <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
        	<version>${logback.version}</version>
        </dependency>
        

        如果你项目中是spring cloud 2.x版本,则logback版本号${logback.version}可以用:

          <version>1.2.3</version>
        

        Spring Cloud 1.x 依赖的logback-classic版本号是:

          <version>1.1.11</version>
        

        二.logback-spring.xml配置

        logback-spring.xml命名要加上-spring,表明它是一个专门为Spring应用准备的Lo编程客栈gback配置文件,此文件将把Spring的日志信息输出到Logback的日志系统中,而且这样才可以使用 <springProfile name="dev">这种根据不同环境切换不同日志输出规则的配置。

        提供一个完整的配置文件,可以根据自己项目定制配置:

        <?xml version="1.0" encoding="UTF-8"?>
        <configuration debug="false" scan="true" scanPeriod="1 seconds">
        
            <contextName>logback</contextName>
               <!--必须修改:改成你的日志文件名,下面配置表示:在项目启动目录下,创建个logs文件夹,并将日志写入到demo.log文件中-->
            <property name="log.name" value="logs/demo"/>
        
            <!--输出到控制台 ConsoleAppender-->
            <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
                <encoder>
                    <pattern&编程gt;%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
                </encoder>
            </appender>
        
          <!--必须要配置:下面配置含义,当单个日志文件大小超过100M后,会生成新日志文件,并将旧其按日志进行打包压缩,当日志总大小超过10G或者日志时间超过7天,就吧最老的日志删除,避免日志撑爆服务器硬盘导致服务器宕机-->
            <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${log.name}.log</file>
                <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
                <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                    <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
                    <FileNamePattern>${log.name}.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
                    <!-- 单个日志文件最多 100MB -->
                    <maxFileSize>100MB</maxFileSize>
                    <!--只保留最近7天的日志-->
                    <maxHistory>7</maxHistory>
                    <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
                    <totalSizeCap>10GB</totalSizeCap>
                </rollingPolicy>
                <!--日志输出编码格式化-->
                <encoder>
                    <charset>UTF-8</charset>
                    <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern>
                </encoder>
            </appender>
        
        <!--  <root level="info">
                <appender-ref ref="console"/>
                <appender-ref ref="file"/>
            </root>-->
        
            <logger name="org.springframework" level="warn"/>
        
            <springProfile name="local">
                <!-- 打印mybatis日志 -->
                <logger name="cn.enn.smart.mapper" level="debug"/>
                <root level="info">
                    <appender-ref ref="console"/>
                    <!--本地环境时,不写入日志文件 -->
                </root>
            </springProfile>
        
            <springProjavascriptfile name="dev">
                <!-- 打印mybatis日志 -->
                <logger name="cn.enn.smart.mapper" level="debug"/>
                <root level="debug">
                    <appender-ref ref="console"/>
                    <appender-ref ref="file"/>
                </root>
            </springProfile>
        
            <springProfile name="test">
                <!-- 打印mybatis日志 -->
                <logger name="cn.enn.smart.mapper" level="debug"/>
                <root level="info">
                    <appender-ref ref="console"/>
                    <appender-ref ref="file"/>
                </root>
            </springProfile>
        
           编程客栈 <springProfile name="pro">
                <!-- 打印mybatis日志 -->
                <logger name="cn.enn.smart.mapper" level="debug"/>
                <root level="info">
                    <appender-ref ref="console"/>
                    <appender-ref ref="file"/>
                </root>
            </springProfile>
        
        </configuration>
        

        其中要修改配置的地方:

        1.日志文件名要配置,这个最好以自己项目名称命名,如:xxx.log

        2.日志保留策略要配置,上面默认保留7天并且总日志大小不能超过10G,否则logback会自动删除

        3.项目配置文件名称要配置,如果你的配置文件命名是application-local.properties、application-dev.properties、application-test.properties、application-pro.properties可使用上述配置,如果不是则需要按自己配置文件真实后缀名,修改: <springProfile name="local">、 <springProfile name="dev">、 <springProfile name="test">、 <springProfile name="pro">这四行配置。

        三.配置文件application.properties所需配置

        1.配置文件中声明项目名称:

        spring.application.name=demo
        

        2.可以根据不同的配置文件,决定是不是要打印Mybatis日志,配置如下:

        ①.关闭生产Mybatis日志

        修改application-pro.propertities文件,增加配置:

        #关闭Mybatis日志
        mybatis.configuration.log-impl=org.apache.ibatis.logging.nologging.NoLoggingImpl
        

        ②.打开开发、测试环境Mybatis日志

        application.properties中增加配置:

        #打印Mybatis日志
        mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
        

        四.如果想让开发、测试、生产等环境共用一套logback配置,可使用logback.xml:

        文件名可直接用logback.xml,不需要用logback-spring.xml来命名了,因为不需要使用使用 <springProfile name="dev">这种配置来区分环境了。

        <?xml version="1.0" encoding="UTF-8"?>
        <configuration debug="false" scan="true" scanPeriod="1 seconds">
        
            <contextName>logback</contextName>
            <property name="log.name" value="logs/demo"/>
        
            <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
                <encoder>
                    <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
                </encoder>
            </appender>
        
            <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${log.name}.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                    <FileNamePattern>${log.name}.%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern>
                    <!-- 单个日志文件最多 100MB -->
                    <maxFileSize>100MB</maxFileSize>
                    <!--只保留最近7天的日志-->
                    <maxHistory>7</maxHistory>
                    <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
                    <totalSizeCap>10GB</totalSizeCap>
                </rollingPolicy>
                <!--日志输出编码格式化-->
                <encoder>
                    <charset>UTF-8</charset>
                    <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern>
                </encoder>
            </appender>
        
            <root level="info">
                <appender-ref ref="console"/>
                <appender-ref ref="file"/>
            </root>
        
        </configuration>
        

        五.如何高效的使用log.debug()打印日志

        log.debug()使用时,最好增加判断,防止条件不满足时候,也会执行打印日志的代码,造成不必要的资源消耗。比如打印日志语句中存在对象转字符串等操作时,增加判断后,将不再消耗系统资源。

        if (log.isDebugEnabled()) {
            log.debug("1.完成将文本数据导入到XML文件中");
        }
        

        总结

        本文介绍了如何使用SpringCloud使用Logback日志框架,文章总结提供了使用Logback框架的实现步骤,以及可能出现的一些问题,以及一些常用的配置项,包括根据不同的环境配置不同日志输出,控制日志文件大小等保留策略,以便读者了解如何构建可靠的微服务应用程序。

        以上就是SpringCloud使用logback日志框架教程详解的详细内容,更多关于SpringCloud logback日志框架的资料请关注我们其它相关文章!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新开发

        开发排行榜