在springCloud中使用logback,实现日志输出,(踩坑)

springboot自己集成了logback,因此无需引入依赖;spring

在resources下创建logback.xml文件,内容以下springboot

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="60 seconds"
               debug="false">
    <!-- scan: 当此属性设置为true时,配置文件若是发生改变,将会被从新加载,默认值为true。 scanPeriod: 设置监测配置文件是否有修改的时间间隔,若是没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
        debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false -->

    <!-- 应用名称 -->
    <property name="app_name" value="tzgServiceUser" />

    <!--日志文件的保存路径,首先查找系统属性-Dlog.dir,若是存在就使用其;不然,在当前目录下建立名为logs目录作日志存放的目录 -->
    <property name="log_home" value="${log.dir:-logs}/${app_name}" />

    <!-- 日志输出格式 -->
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
    <property name="console_pattern"
              value="%-5level \t %d{yyyy-MM-dd HH:mm:ss.SSS} \t %msg \t [%thread] \t %logger{80}%n" />

    <property name="warn_pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg %n" />

    <property name="error_pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg %n" />

    <contextName>${app_name}</contextName>

    <!-- 信息输出到文件 -->
    <appender name="warn"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/info/%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${warn_pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
    </appender>

    <!-- 错误输出到文件 -->
    <appender name="error"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/error/%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${error_pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>

    <root>
        <level value="INFO" />
        <appender-ref ref="warn" />
        <appender-ref ref="error" />
    </root>

</configuration>

启动项目会自动生成log:app

注意: 千万注意:一开始我看网上的不少博客说的将配置文件名字设为 logback-spring,项目启动不了!以下所示!因此小伙伴们千万注意了不要迷信网上的,实践出真知!ide

追加:能够使用logback-spring!在application.xml配置文件中指定便可:spa

logging:
  config:
    classpath: logback-spring.xml

追加:配置完上面可能有人会有疑问,ide控制台怎么没有日志输出了?由于咱们上面的配置文件中尚未配置 console(控制台):线程

在上面logback-spring.xml中添加一个appender,name为"CONSOLE":debug

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>info</level>
</filter>
<encoder>
    <Pattern>${console_pattern}</Pattern>
    <!-- 设置字符集 -->
    <charset>UTF-8</charset>
</encoder>
</appender>
将原来的<property name="console_pattern" value="%-5level \t %d{yyyy-MM-dd HH:mm:ss.SSS} \t %msg \t [%thread] \t %logger{80}%n" />(这个是黑白的,无感)
替换为<property name="console_pattern"
          value="[%highlight(%-5level)]%green([%date{yyyy-MM-dd HH:mm:ss}]) %boldMagenta([%thread-%logger{96}-%mdc{client}-%line line])  - %cyan(%msg%n)"/>(这个是输出带彩色的格式,看起来酷炫一点,习惯一些)

最后在root中添加以下一行,使console配置起效日志

<appender-ref ref="CONSOLE" />

效果图以下:code

相关文章
相关标签/搜索