springboot中log的一些操作注意点版权声明

原创
小哥 3年前 (2022-10-27) 阅读数 45 #大杂烩

1 .配置日志输出到文件

输出到指定文件

logging:
  file:/logs/application.log

输出到指定目录(将写入 spring.log 中)

logging:
  path: /logs/
当同时进行时 logging.path 和 logging.file 时 logging.path 无效

2.优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL

以下内容将打印出来info及其上级日志(全局)

logging:
  level:
    root:  info

会打印com.vss.service.impl包下warn和上面的原木
logging:
  level:
    com.vss.service.impl: warn、

3. 自定义日志配置

Spring Boot 官方推荐的优先使用 -spring 文件名用作您的日志配置(例如 logback-spring.xml ,而不是 logback.xml ),默认情况下名为 logback-spring.xml 的日志配置文件,并放置在 src/main/resources 下面(不是下面的文件夹,默认为resources下)

如果您想要完全控制日志配置,但不想使用它。 logback.xml 作为 Logback 配置的名称, application.yml 可以通过 logging.config 属性指定一个自定义名称:

logging.config=classpath:logging-config.xml

3.1根节点

  • scan:设置此属性时 true 如果配置文件更改,将使用缺省值重新加载 true
  • scanPeriod:设置监控配置文件是否被修改的时间间隔。如果未指定时间单位,则默认单位为毫秒。什么时候 scantrue 此属性生效。默认时间间隔为1分钟。
  • debug:设置此属性时 true 什么时候,就会打印出来。 logback 内部日志信息,实时查看。 logback 运行状态。缺省值为 false

3.2

root节点是指定最基本的日志输出级别所需的节点,只有一个level属性。

level:用于设置打印级别,不区分大小写:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,无法设置INHERITED或同义词NULL。
默认是DEBUG。
可以包含零个或多个元素来标识此appender将添加到此loger。

appender用于格式化日志输出节点,有两个属性name和class,class用于指定输出策略,通常使用的是控制台输出策略和文件输出策略。

%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

3.3

<loger> 用于设置包或特定类的日志打印级别,并指定 <appender><loger> 仅有一个 name 属性,则为可选 level 和一个可选的 addtivity 属性。

  • name :用于指定主题。loger约束包或特定类。
  • level :用于设置打印级别,不区分大小写:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特殊的价值。INHERITED或同义词NULL,代表执法上级的水平。如果未设置此属性,则当前loger上级的水平将被继承。
  • addtivity :是否给上级loger传递打印信息。缺省值为true,true将此 loger 打印信息被传达给上级。;

第一点: loger 配置,未指定级别,无 appender

logback-spring.xml 增加 loger 配置如下:

<logger name="com.dudu.controller" /> 将控制 controller 打印了该包下所有类的日志,但没有设置打印级别,所以他继承了上级的日志级别。 “info”
没有设置 addtivity ,默认为true,将此 loger 打印信息被传达给上级。;
没有设置 appender ,此 loger 其本身不打印任何信息。
<root level="info">root 设置了打印级别 “info” ,使用名称指定 “console”appender

当执行 com.dudu.controller.LearnController 类的 login 方法时, LearnController 在包com.dudu.controller,所以先执行。 <logger name="com.dudu.controller"/> ,级别为 “info” 及大于 “info” 将日志信息传递到 root ,本身不打印;
root 收到下级发送的信息后,移交给已配置的名为“console”的 appender 处理, “console” appender 将信息打印到控制台;

打印结果如下:

16:00:17.407 logback [http-nio-8080-exec-8] INFO  com.dudu.controller.LearnController - 日志输出 info
16:00:17.408 logback [http-nio-8080-exec-8] WARN  com.dudu.controller.LearnController - 日志输出 warn
16:00:17.408 logback [http-nio-8080-exec-8] ERROR com.dudu.controller.LearnController -

第二:拥有多个 loger 配置,指定级别,指定。 appender

logback-spring.xml 增加 loger 配置如下:


    ...

    
    
        
    

控制 com.dudu.controller.LearnController 类的日志打印,打印级别为“ WARN ”;
additivity 属性为 false ,表示此 loger 打印信息不再传达给上级。;
用名称“指定” console ”的 appender ;

现在是执行的时候了 com.dudu.controller.LearnController 类的login方法,则首先执行。 <logger name="com.dudu.controller.LearnController" level="WARN" additivity="false"> ,级别将为“ WARN “并且大于”WARN“日志信息被提供给这个 loger 指定的名称“ console ”的 appender 在控制台处理、录入日志,不再交给上级。 root 传递打印信息。

打印结果如下:

16:00:17.408 logback [http-nio-8080-exec-8] WARN  com.dudu.controller.LearnController - 日志输出 warn
16:00:17.408 logback [http-nio-8080-exec-8] ERROR com.dudu.controller.LearnController - 日志输出 error

当然,如果你把 additivity="false" 改成 additivity="true" 如果是,则打印两次,因为打印信息是传输给上级的,logger它本身只打印一次,root收到后,重新打印。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门