首页 > 作文

Java接口测试之日志框架Logback的具体使用

更新时间:2023-04-04 17:49:21 阅读: 评论:0

目录
一、引言二、前言三、logback、slf4j和log4j之间的关系四、默认日志logback五、配置详解1、添加日志依赖2、配置文件六、多环境日志输出七、单元测试八、工程目录九、总结

一、引言

对于一个成熟的接口测试框架,日志管理这个是必不可少的。在开发和调试阶段,日志可以帮助我们更快的定位问题;而在测试的运维过程中,日志系统又可以帮助我们记录大部分的异常信息,通

二、前言

spring boot 在所有内部日志中使用commons logging,但是默认配置也提供了对常用日志的支持,如:java util logging,log4j, log4j2和logback。每种 logger 都可以通过配置使用控制台或者文件输出日志内容。

三、logback、slf4j和log4j之间的关系

slf4j是the simple logging facade for java的简称,是一个简单日志门面抽象框架,它本身只提供了日志fac耳鸣保健操ade api和一个简单的日志类实现,一般常配合log4j,logback,java.util.logging使用。slf4j作为应用层的log接入时,程序可以根据实际应用场景动态调整底层的日志实现框架(log4j/logback/jdklog…)。

logback和log4j都是开源日记工具库,logback 是 log4j 的改良版本,比 log4j 拥有更多的特性,同时也带来很大性能提升,同时天然支持slf4j。

logback 官方建议配合 slf4j 使用,这样可以灵活地替换底层日志框架。

tips:为了优化log4j,以及更大性能的提升,apache基金会已经着手开发了log4j 2.0, 其中也借鉴和吸收了logback的一些先进特性。

四、默认日志logback

默认情况下,spring boot 会用 logback 来记录日志,并用 info 级别输出到控制台。在运行应用程序和其他例子时,你应该已经看到很多info级别的日志了。

从上图可以看到,日志输出内容元素具体如下:

时间日期:精确到毫秒日志级别:error, warn, info, debug or tracelogger名:通常使用源代码的类名分隔符:— 标识实际日志的开始进程 id线程名:方括号括起来(可能会截断控制台输出)日志内容

五、配置详解

1、添加日志依赖

假如maven依赖中添加了spring-boot-starter-logging:

<dependency>  <groupid>org.springframework.boot</groupid>  <artifactid>spring-boot-starter-logging</artifactid></dependency>

那么,我们的spring boot应用将自动使用 logback 作为应用日志框架,spring boot 启动的时候,由 org.springframework.boot.logging.logging-application-listener根据情况初始化并使用。

但是呢,实际开发中我们不需要直接添加该依赖,你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,该依赖内容就是 spring boot 默认的日志框架 logback

2、配置小故事大道理文件

spring boot 官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml),命名为logback-spring.xml的日志配置文件,spring boot可以为它添加一些 spring boot特有的配置项(下面会提到)。并且放在src/main/resources下面即可。

配置文件 logback-spring.xml

<?xml version="1.0" encoding="utf-8"?><configuration>  <!-- 日志根目录-->  <springproperty scope=北京的英语"context" name="log_home" source="logging.path" defaultvalue="./logs/spring-boot-logback"/>  <!-- 日志级别 -->  <springproperty scope="context" name="log_root_level" source="logging.level.root" defaultvalue="debug"/>  <!-- 标识这个"stdout" 将会添加到这个logger -->  <springproperty scope="context" name="stdout" source="log.stdout" defaultvalue="stdout"/>  <!-- 日志文件名称-->  <property name="log_prefix" value="spring-boot-logback" />  <!-- 日志文件编码-->  <property name="log_chart" value="utf-8" />  <!-- 日志文件路径+日期-->  <property name="log_dir" value="${log_home}/%d{yyyymmdd}" />  <!--对日志进行格式化-->  <property name="log_msg" value="- | [%x{requestuuid}] | [%d{yyyymmdd hh:mm:ss.sss}] | [%level] | [${hostname}] | [%thread] | [%logger{36}] | --> %msg|%n "/>  <!--文件大小,默认10mb-->  <property name="max_file_size" value="50mb" />  <!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->  <property name="max_history" value="10"/>  <!--输出到控制台-->  <appender name="stdout" class="ch.qos.logback.core.consoleappender">    <!-- 输出的日志内容格式化-->    <layout class="ch.qos.logback.classic.patternlayout">      <pattern>${log_msg}</pattern>    </layout>  </appender>  <!--输出到文件-->  <appender name="0" class="ch.qos.logback.core.rolling.rollingfileappender">  </appender>  <!-- 定义 all 日志的输出方式:-->  <appender name="file_all" class="ch.qos.logback.core.rolling.rollingfileappender">    <!--日志文件路径,日志文件名称-->    <file>${log_home}/all_${log_prefix}.log</file>    <!-- 设置滚动策略,当天的日志大小超过 ${max_file_size} 文件大小时候,新的内容写入新的文件, 默认10mb -->    <rollingpolicy class="ch.qos.logback.core.rolling.timebadrollingpolicy">      <!--日志文件路径,新的 all 日志文件名称,“ i ” 是个变量 -->      <filenamepattern>${log_dir}/all_${log_prefix}%i.log</filenamepattern>      <!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->      <maxhistory>${max_history}</maxhistory>      <!--当天的日志大小超过 ${max_file_size} 文件大小时候,新的内容写入新的文件, 默认10mb-->      <timebadfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebadfnatp">        <maxfilesize>${max_file_size}</maxfilesize>      </timebadfilenamingandtriggeringpolicy>    </rollingpolicy>    <!-- 输出的日志内容格式化-->    <layout class="ch.qos.logback.classic.patternlayout">      <pattern>${log_msg}</pattern>    </layout>  </appender>  <!-- 定义 error 日志的输出方式:-->  <appender name="file_error" class="ch.qos.logback.core.rolling.rollingfileappender">    <!-- 下面为配置只输出error级别的日志 -->    <filter class="ch.qos.logback.classic.filter.levelfilter">      <level>error</level>      <onmismatch>deny</onmismatch>      <onmatch>accept</onmatch>    </filter>    <!--日志文件路径,日志文件名称-->    <file>${log_home}/err_${log_prefix}.log</file>    <!-- 设置滚动策略,当天的日志大小超过 ${max_file_size} 文件大小时候,新的内容写入新的文件, 默认10mb -->    <rollingpolicy class="ch.qos.logback.core.rolling.timebadrollingpolicy">      <!--日志文件路径,新的 err 日志文件名称,“ i ” 是个变量 -->      <filenamepattern>${log_dir}/err_${log_prefix}%i.log</filenamepattern>      <!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->      <maxhistory>${max_history}</maxhistory>      <!--当天的日志大小超过 ${max_file_size} 文件大小时候,新的内容写入新的文件, 默认10mb-->      <timebadfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebadfnatp">        <maxfilesize>${max_file_size}</maxfilesize>      </timebadfilenamingandtriggeringpolicy>    </rollingpolicy>    <!-- 输出的日志内容格式化-->    <layout class="ch.qos.logback.classic.patternlayout">      <pattern>${lo延安我把你追寻g_msg}</pattern>    </layout>  </appender>  <!-- additivity 设为fal,则logger内容不附加至root ,配置以配置包下的所有类的日志的打印,级别是 error-->  <logger name="org.springframework"   level="error" />  <logger name="org.apache.commons"   level="error" />  <logger name="org.apache.zookeeper"  level="error" />  <logger name="com.alibaba.dubbo.monitor" level="error"/>  <logger name="com.alibaba.dubbo.remoting" level="error" />  <!-- ${log_root_level} 日志级别 -->  <root level="${log_root_level}">    <!-- 标识这个"${stdout}"将会添加到这个logger -->    <appender-ref ref="${stdout}"/>    <!-- file_all 日志输出添加到 logger -->    <appender-ref ref="file_all"/>    <!-- file_error 日志输出添加到 logger -->    <appender-ref ref="file_error"/>  </root></configuration>

配置文件 application.yml

rver: port: 8888 # 端口号logging: path: ./logs/zuozewei level:  root: info #日志级别从低到高分为trace < debug < info < warn < error < fatal,如果设置为warn,则低于warn的信息都不会输出

日志会每天新建一个文件夹,日文文件配置的每50兆,一个文本文件,超过新写入一个

文件夹:20181228
文件夹内容:all_spring-boot-logback0.log
文件夹内容:all_spring-boot-logback1.log
文件夹内容:all_spring-boot-logback2.log

文件夹内容:err_spring-boot-logback0.log

六、多环境日志输出

根据不同环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出,在 logback-spring.xml中使用 springprofile 节点来定义,方法如下:

文件名称不是 logback.xml,想使用spring扩展profile支持,要以logback-spring.xml 命名

<!-- 生产环境生效 --> <springprofile name="prod">  <root level="error">   <appender-ref ref="stdout" />   <appender-ref ref="file" />  </root> </springprofile> <!-- 测试和开发环境日志级别为info/并且记录日志文件 --> <springprofile name="dev,test">  <!-- 日志输出级别 -->  <root level="info">   <appender-ref ref="stdout" />   <appender-ref ref="file" />  </root> </springprofile>

可以启动服务的时候指定 profile (如不指定使用默认),如指定prod 的方式为:

java -jar xxx.jar –spring.profiles.active=prod

七、单元测试

此处我选择使用lombok效率插件,所以只需要@slf4j注解即可简化private logger logger = loggerfactory.getlogger(this.getclass())的写法
runwith(springrunner.class)

@springboottest@slf4jpublic class logbackdemoapplicationtests { @test public void contextloads() {  log.info("输出info");  log.debug("输出debug");  log.error("输出error"); }}

生成的日志:

– | [] | [20181228 22:53:20.756] | [info] | [192.168.1.18] | [main] | [c.z.l.logbackdemoapplicationtests] | –> starting logbackdemoapplicationtests on 192.168.1.18 with pid 82507 (started by apple in /循环小数是有理数吗urs/apple/downloads/springboot-logback-demo)|
– | [] | [20181228 22:53:20.762] | [info] | [192.168.1.18] | [main] | [c.z.l.logbackdemoapplicationtests] | –> no active profile t, falling back to default profiles: default|
– | [] | [20181228 22:53:21.590] | [info] | [192.168.1.18] | [main] | [c.z.l.logbackdemoapplicationtests] | –> started logbackdemoapplicationtests in 1.69 conds (jvm running for 3.525)|
– | [] | [20181228 22:53:21.955] | [info] | [192.168.1.18] | [main] | [c.z.l.logbackdemoapplicationtests] | –> 输出info|
– | [] | [20181228 22:53:21.955] | [error] | [192.168.1.18] | [main] | [c.z.l.logbackdemoapplicationtests] | –> 输出error|

八、工程目录

九、总结

到此为止终于介绍完 logback日志框架了,平时使用的时候推荐用自定义logback-spring.xml来配置,代码中使用日志也很简单,类里面添加private logger logger = loggerfactory.getlogger(this.getclass()); 即可,如果使用lombok效率插件需要@slf4j注解。

本文源码:github.com/zuozewei/blog-example/tree/master/java-api-test/03-log-framework/springboot-logback-demo

到此这篇关于java接口测试之日志框架logback的具体使用的文章就介绍到这了,更多相关java logback内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 17:49:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/b80795a0a891a85b9f53087731d74f0c.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java接口测试之日志框架Logback的具体使用.doc

本文 PDF 下载地址:Java接口测试之日志框架Logback的具体使用.pdf

标签:日志   内容   文件   级别
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图