spring项目中日志问题

设置某个类的某个方法打印级别,可以在配置文件中设置。 WARN的的意思是只打印WARN级别和以上的日志(ERROR),也可以设置INFO、DEBUG。也可以关闭OFF

logging.level.com.test.Test.test=WARN

  当然也可以设置某个包的日志级别

 

如果你使用的是 Spring Boot 默认的日志框架 Logback,可以在 logback-spring.xml 中添加如下配置:

  <logger name="com.test.Test.test" level="WARN" additivity="true">
    <appender-ref ref="CONSOLE"/>
  </logger>

 appender-ref 指向 CONSOLE:
表示匹配的日志会输出到名为 CONSOLE 的 appender,也就是控制台日志。

additivity="true":
表示此 logger 的日志还会继续传递给父 logger(即 root),也就是说除了输出到 CONSOLE,也会走 root 中定义的其他 appender(如文件日志)。 
如果你只想让它单独输出,不继承 root 的设置,可以改为 additivity="false"。


我的root定义是:

<!-- 非 dev 环境输出日志,dev 环境即非:spring.profiles.active=dev -->
  <springProfile name="!dev">
    <!-- 日志输出级别 -->
    <root level="info">
      <appender-ref ref="CONSOLE"/>
      <appender-ref ref="DEBUG_FILE"/>
      <appender-ref ref="INFO_FILE"/>
      <appender-ref ref="WARN_FILE"/>
      <appender-ref ref="ERROR_FILE"/>
    </root>
  </springProfile>
  <springProfile name="dev">
    <root level="DEBUG">
      <appender-ref ref="CONSOLE"/>
      <appender-ref ref="DEBUG_FILE"/>
      <appender-ref ref="INFO_FILE"/>
      <appender-ref ref="WARN_FILE"/>
      <appender-ref ref="ERROR_FILE"/>
    </root>
  </springProfile>

  

  

我的完整版配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration debug="false">
  <!--  <property resource="application.properties"/>-->
  <!--  application.properties的logback.loghome 尽量不要配置相对路径   相对路径就是把第一个/去掉:opt/logs/vtour-adapter-->
  <springProperty scope="context" name="LOG_HOME" source="logging.file.path" defaultValue="/opt/logs/test"/>
  <!--标签的工作方式与Logback的标准<property>标签类似,但不是直接value 指定source属性(从Environment)指定。
  scope 如果需要将属性存储在local范围之外的其他位置,则可以使用该属性。如果您需要一个后备值,以防该属性未设置,则Environment可以使用该defaultValue属性-->
  <springProperty scope="context" name="EXCEPTION_LOCATION" source="exception-location"/>

  <!--0. 日志格式和颜色渲染 -->
  <!-- 彩色日志依赖的渲染类 -->
  <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}}"/>


  <!-- 控制台输出 -->
  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <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} - %X{session} %msg%n</pattern>
    </encoder>
    <!-- 过滤 Druid 的 SQLFeatureNotSupportedException -->
    <!-- DruidPooledResultSet.getObject() -->
    <!--      <filter class="ch.qos.logback.core.filter.EvaluatorFilter">-->
    <!--        <evaluator>-->
    <!--          <expression>java.sql.SQLFeatureNotSupportedException.class.isInstance(throwable)</expression>-->
    <!--        </evaluator>-->
    <!--        <onMatch>DENY</onMatch>-->
    <!--      </filter>-->
    <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>debug</level>
    </filter>
    <encoder>
      <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
      <!-- 设置字符集 -->
      <charset>UTF-8</charset>
    </encoder>
  </appender>

  <!--2. 输出到文档-->
  <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
  <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--日志文档输出格式-->
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
      <charset>UTF-8</charset> <!-- 设置字符集 -->
    </encoder>
    <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- 日志归档 -->
      <fileNamePattern>${LOG_HOME}/debug/vtour-adapter-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
      <!--日志文档保留天数-->
      <maxHistory>3</maxHistory>
    </rollingPolicy>
    <!-- 此日志文档只记录debug级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>debug</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
  <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--日志文档输出格式-->
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
      <charset>UTF-8</charset>
    </encoder>
    <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- 每天日志归档路径以及格式 -->
      <fileNamePattern>${LOG_HOME}/info/vtour-adapter-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
      <!--日志文档保留天数-->
      <maxHistory>15</maxHistory>
    </rollingPolicy>
    <!-- 此日志文档只记录info级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>info</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
  <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--日志文档输出格式-->
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
      <charset>UTF-8</charset> <!-- 此处设置字符集 -->
    </encoder>
    <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_HOME}/warn/vtour-adapter-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
      <!--日志文档保留天数-->
      <maxHistory>15</maxHistory>
    </rollingPolicy>
    <!-- 此日志文档只记录warn级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>warn</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>


  <!-- 按照每天生成日志文件 -->
  <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!--日志文件输出的文件名-->
      <FileNamePattern>${LOG_HOME}/error/vtour-adapter-error.log.%d{yyyy-MM-dd.HH}.log</FileNamePattern>
      <!--            <FileNamePattern>${LOG_HOME}/oa.error.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>-->
      <!--日志文件保留天数-->
      <MaxHistory>72</MaxHistory>
    </rollingPolicy>
    <!--日志文档输出格式-->
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
      <charset>UTF-8</charset> <!-- 此处设置字符集 -->
    </encoder>
    <!-- 此日志文档只记录ERROR级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>ERROR</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <logger name="org.apache.http" level="INFO" additivity="true">
    <appender-ref ref="CONSOLE"/>
  </logger>
  <logger name="com.netflix.discovery.DiscoveryClient" level="INFO" additivity="true">
    <appender-ref ref="CONSOLE"/>
  </logger>
  <logger name="org.springframework.web.servlet.DispatcherServlet" level="INFO" additivity="true">
    <appender-ref ref="CONSOLE"/>
  </logger>
  <logger name="org.apache.http.impl.conn.PoolingHttpClientConnectionManager" level="INFO" additivity="true">
    <appender-ref ref="CONSOLE"/>
  </logger>
  <logger name="springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping" level="INFO" additivity="true">
    <appender-ref ref="CONSOLE"/>
  </logger>
  <logger name="org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping" level="INFO" additivity="true">
    <appender-ref ref="CONSOLE"/>
  </logger>
  <logger name="com.test.Test.test" level="WARN" additivity="true">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="druid" level="INFO">
    <appender-ref ref="CONSOLE"/>
  </logger>
  <logger name="org.springframework.jdbc" level="debug">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <!-- 非 dev 环境输出日志,dev 环境即非:spring.profiles.active=dev -->
  <springProfile name="!dev">
    <!-- 日志输出级别 -->
    <root level="info">
      <appender-ref ref="CONSOLE"/>
      <appender-ref ref="DEBUG_FILE"/>
      <appender-ref ref="INFO_FILE"/>
      <appender-ref ref="WARN_FILE"/>
      <appender-ref ref="ERROR_FILE"/>
    </root>
  </springProfile>
  <springProfile name="dev">
    <root level="DEBUG">
      <appender-ref ref="CONSOLE"/>
      <appender-ref ref="DEBUG_FILE"/>
      <appender-ref ref="INFO_FILE"/>
      <appender-ref ref="WARN_FILE"/>
      <appender-ref ref="ERROR_FILE"/>
    </root>
  </springProfile>

</configuration>

  

  

 

常见的日志级别说明

 

posted @ 2025-06-14 12:32  风不  阅读(26)  评论(0)    收藏  举报