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>
常见的日志级别说明