logback的使用:
Logback的默认配置
如果配置文件 logback-test.xml 和 logback.xml 都不存在,那么 logback 默认地会调用BasicConfigurator ,创建一个最小化配置。最小化配置由一个关联到根 logger 的ConsoleAppender 组成。输出用模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 的 PatternLayoutEncoder 进行格式化。root logger 默认级别是 DEBUG。
1、Logback的配置文件
Logback 配置文件的语法非常灵活。正因为灵活,所以无法用 DTD 或 XML schema 进行定义。尽管如此,可以这样描述配置文件的基本结构:以
2、Logback默认配置的步骤
(1). 尝试在 classpath 下查找文件 logback-test.xml;
(2). 如果文件不存在,则查找文件 logback.xml;
(3). 如果两个文件都不存在,logback 用 Bas icConfigurator 自动对自己进行配置,这会导致记录输出到控制台。
3、Logback.xml 文件
在src/main/resources下添加Logback.xml目录如下:
Logback.xml配置如下:
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 <configuration> 3 <!--tomcat下日志存放路径的配置,其他应用服务器,请自己改动--> 4 <property name="LOG_PATH" value="${CATALINA_HOME:-..}/logs/hy360"/> 5 <!-- 彩色日志格式 --> 6 <!--不加粗的彩色格式,喜欢用就消掉注释--> 7 <!--<property name="CONSOLE_LOG_PATTERN" value="%boldCyan(%date{yyyy-MM-dd HH:mm:ss:SSS}) | %highlight(%-5level) | %yellow(%15.15t) | %green(%40.40logger{39}) | %msg%n"/>--> 8 <!--加粗的彩色格式,不喜欢就用上面的--> 9 <property name="CONSOLE_LOG_PATTERN" 10 value="%boldCyan(%date{yyyy-MM-dd HH:mm:ss:SSS}) | %highlight(%-5level) | %boldYellow(%15.15t) | %boldGreen(%40.40logger{39}) | %gray(%msg%n)"/> 11 <!--日志文件里的 日志文字输出格式--> 12 <property name="FILE_LOG_PATTERN" 13 value="[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n"/> 14 <!-- Console 输出设置 --> 15 <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 16 <!--encoder 默认配置为PatternLayoutEncoder --> 17 <encoder> 18 <pattern>${CONSOLE_LOG_PATTERN}</pattern> 19 </encoder> 20 <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息 --> 21 <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 22 <level>INFO</level> 23 </filter> 24 </appender> 25 <!-- 按照每天生成日志文件 --> 26 <!-- 出错日志 appender --> 27 <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> 28 <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> 29 <!-- 按天回滚 daily --> 30 <!-- log.dir 在maven profile里配置 --> 31 <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}-error.%i.log.zip</fileNamePattern> 32 <!-- 日志最大的历史 60天 --> 33 <maxFileSize>10MB</maxFileSize> 34 <maxHistory>60</maxHistory> 35 <totalSizeCap>1GB</totalSizeCap> 36 </rollingPolicy> 37 <encoder> 38 <pattern>${FILE_LOG_PATTERN}</pattern> 39 </encoder> 40 <!-- 只打印错误日志 --> 41 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 42 <level>ERROR</level> 43 <onMatch>ACCEPT</onMatch> 44 <onMismatch>DENY</onMismatch> 45 </filter> 46 </appender> 47 <!-- info日志 appender --> 48 <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> 49 <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> 50 <!-- 按天回滚 daily --> 51 <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}-info.%i.log.zip</fileNamePattern> 52 <!-- 日志最大的历史 60天 --> 53 <maxFileSize>10MB</maxFileSize> 54 <maxHistory>60</maxHistory> 55 <totalSizeCap>1GB</totalSizeCap> 56 </rollingPolicy> 57 <encoder> 58 <pattern>${FILE_LOG_PATTERN}</pattern> 59 </encoder> 60 <!-- 只打印INFO日志 --> 61 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 62 <level>INFO</level> 63 <onMatch>ACCEPT</onMatch> 64 <onMismatch>DENY</onMismatch> 65 </filter> 66 </appender> 67 <!-- 生产环境下,将此级别配置为适合的级别,以免日志文件太多或影响程序性能 --> 68 <root level="INFO"> 69 <appender-ref ref="CONSOLE"/> 70 <appender-ref ref="ERROR"/> 71 <appender-ref ref="INFO"/> 72 </root> 73 </configuration>
在程序用引用Logback:
public class WxPayController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private WxPayServiceImpl wxPayService; @Autowired private AliPayService payService; @GetMapping("/queryOrder") public ResultVo<Integer> queryOrder(@RequestParam(required = false) String transactionId, @RequestParam(required = false) String outTradeNo) { try { wxPayService.queryOrder(transactionId, outTradeNo); } catch (WxPayException e) { logger.error("查询微信支付订单时发生错误,原因:" + e.getMessage()); } return ResultVo.success(0); } }