一般系统出问题,我们都会去查询logger,正常系统都会把log分为正常级别与异常,异常的还好查,但是遇到不是异常的又如何查呢?
1:普通查询:vi xxx.log /关键字
2:高级查询:vi xxx.log esc :v/关键字/d(以此查询出来的log只会把有关键字的log显示出来,精准定位)
12018-04-27 17:05:04.747 ERROR com.xx.api.CommonCtrl : invoke SMS api error. code=2,msg=请求参数格式错误
22018-04-27 17:05:11.899 ERROR com.xx.api.CommonCtrl : invoke SMS api error. code=2,msg=请求参数格式错误
32018-04-28 09:57:50.511 ERROR com.xx.api.CommonCtrl : invoke SMS api error. code=15,msg=签名不匹配
42018-04-28 09:58:00.995 ERROR com.xx.api.CommonCtrl : invoke SMS api error. code=15,msg=签名不匹配
52018-04-28 09:58:37.311 ERROR com.xx.api.CommonCtrl : invoke SMS api error. code=15,msg=签名不匹配
上述的是简单的日志查询技巧,接下来介绍的是单独流程日志,正常系统的关键模块需要单独开一个log,比如提现,充值,这样排查的时候比较好查,那么如何实现呢?
1:新建提现日志类
1public class RechargeLog {
2 private static final Logger logger = LoggerFactory.getLogger( RechargeLog.class );
3 public static void info(String format,Object... arguments){
4 logger.info(format,arguments);
5 }
6 public static void info(String format){
7 logger.info(format);
8 }
9 public static void debug(String format,Object... arguments){
10 logger.debug(format,arguments);
11 }
12 public static void debug(String format){
13 logger.debug(format);
14 }
15 public static void error(String format, Object... arguments){
16 logger.error(format,arguments);
17 }
18 public static void error(String format){
19 logger.error(format);
20 }
21}
2:logger.xml配置
1 <!--支付流程日志 -->
2 <appender name="RECHARGE_LOG"
3 class="ch.qos.logback.core.rolling.RollingFileAppender">
4 <file>${LOG_HOME}/recharge.txt</file>
5 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
6 <fileNamePattern>${LOG_HOME}/%d{yyyy.MM,aux}/recharge.%d{yyyy-MM-dd}.%i.zip
7 </fileNamePattern>
8 <timeBasedFileNamingAndTriggeringPolicy
9 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
10 <maxFileSize>1024MB</maxFileSize>
11 </timeBasedFileNamingAndTriggeringPolicy>
12 </rollingPolicy>
13 <encoder>
14 <pattern>%d{MM-dd HH:mm:ss.SSS} %level - %msg%n
15 </pattern>
16 </encoder>
17 </appender>
18 <logger name="com.xm.stmall.log.RechargeLog" level="DEBUG" additivity="false" >
19 <appender-ref ref="RECHARGE_LOG" />
20 </logger>
3:使用方法
在你的业务代码中有关提现或者充值的日志直接调用 RechargeLog .info('提现')即可
4:技术讨论请关注公众号