论坛首页新手上路 签到
查看: 4622|回复: 0

[知识分享] 包装日志Logger,打印错误返回码

[复制链接]
金智-周雷

该用户从未签到

11

主题

11

帖子

33

积分

初来乍到

凡人

Rank: 1

积分
33
发表于 2017-9-2 12:42:00 | 显示全部楼层 |阅读模式
本帖最后由 leizhou 于 2017-9-29 13:28 编辑

包装日志Logger,打印错误返回码

-----------------------------------
目的:
       ERROR日志增加前缀,打印错误返回码: SYS_CODE + 异常类型 + SEQ_CODE
  1. /**
  2. *
  3. * <pre>
  4. * 描述:错误返回码定义类
  5. * </pre>
  6. */
  7. public final class ResultCode {
  8.     /*
  9.      * 1、系统标识:1位,表示业务或是平台,1-业务、2-平台
  10.      * 2、系统名称:2~3位,表示具体业务或平台,01-学生、02-教师、03-OA、04-教务、05-研究生、06-AMP、07-IDS、08-BUS、09-自定义报表、10-移动、11-公共应用、12-自助服务、13-支付通、14-EMAP、15-一表通、16-ESOP
  11.      */
  12.     public static String SYS_CODE = "#E111";
  13.     // 异常序列号:6~10位,每个模块自定义,要求模块范围内唯一性。默认"00000"
  14.     public static String SEQ_CODE = "00000";
  15.    
  16.     // 正常
  17.     public static final int OK = 0;
  18.    
  19.     /*
  20.      * 异常类型:4~5位,标识数据库、接口、缓存、权限等
  21.      * 01-参数异常,参数有效性校验错误;
  22.      * 02-数据库异常,操作数据库异常,msg中必须有SQL语句和参数信息;
  23.      * 03-缓存异常,对redis、JVM缓存操作失败;
  24.      * 04-权限异常,功能权限、数据权限类异常;
  25.      * 05-网络异常,与外部系统网络通讯异常,msg中必须有外部系统的IP和端口信息;
  26.      * 06-其它运行异常,JAVA程序运行时异常;
  27.      * 07-接口异常,接口调用异常,msg中必须有接口服务端的IP和端口、接口参数信息;
  28.      * 99-除以上外的异常
  29.      */
  30.     public static final int PARAM_ERROR = 1;
  31.     public static final int DB_ERROR = 2;
  32.     public static final int CACHE_ERROR = 3;
  33.     public static final int AUTH_ERROR = 4;
  34.     public static final int CONN_NET_ERROR = 5;
  35.     public static final int JAVA_RUNTIME_ERROR = 6;
  36.     public static final int INTERFACE_ERROR = 7;
  37.     public static final int OTHER_ERROR = 99;
  38.    
  39. }
复制代码


-----------------------------------
包装类

  1. public class LoggerDecorateFactory {
  2.    
  3.     public static LoggerDecorate getLogger(Class className){
  4.         return new LoggerDecorate(className);
  5.     }
  6.    
  7.     public static LoggerDecorate getLogger(String name){
  8.         return new LoggerDecorate(name);
  9.     }
  10. }
复制代码

  1. /**
  2. * <pre>
  3. * 描述:ERROR日志增加前缀: SYS_CODE + 异常类型 + SEQ_CODE
  4. * </pre>
  5. * <pre>HISTORY
  6. * ****************************************************************************
  7. *  ID   DATE            PERSON         REASON
  8. *  1    2017年6月2日      01116253         Create
  9. * ****************************************************************************
  10. * </pre>
  11. * @author 01116253
  12. * @since 1.0
  13. */
  14. public class LoggerDecorate {
  15.     private Logger logger;
  16.    
  17.     public LoggerDecorate(Class className){
  18.         logger = LoggerFactory.getLogger(className);
  19.     }
  20.    
  21.     public LoggerDecorate(String name){
  22.         logger = LoggerFactory.getLogger(name);
  23.     }
  24.     public boolean isDebugEnabled() {
  25.         return logger.isDebugEnabled();
  26.     }
  27.    
  28.     /**
  29.      * <pre>
  30.      * 常用
  31.      * </pre>
  32.      * @param msgFormat
  33.      * @param arguments
  34.      */
  35.     public void error(String msgFormat, Object... arguments) {
  36.         error(ResultCode.OTHER_ERROR, ResultCode.SEQ_CODE, msgFormat, arguments);
  37.     }
  38.     // 明确指定异常类型和异常序列号
  39.     public void error(int exceptionType, String exceptionSeqCode, String msgFormat, Object... arguments) {
  40.         String exceptionTypeStr = null;
  41.         if(exceptionType < 10){
  42.             exceptionTypeStr = "0" + exceptionType;
  43.         }else{
  44.             exceptionTypeStr = "" + exceptionType;
  45.         }

  46.         StringBuilder errcode = new StringBuilder();
  47.         errcode.append(ResultCode.SYS_CODE);
  48.         errcode.append(exceptionTypeStr);
  49.         errcode.append(exceptionSeqCode);
  50.         errcode.append("  ");
  51.         errcode.append(msgFormat);
  52.         logger.error(errcode.toString(), arguments);
  53.     }
  54.    
  55.     public void info(String msgFormat, Object... arguments) {
  56.         logger.info(msgFormat, arguments);
  57.     }
  58.    
  59.     public void debug(String msgFormat, Object... arguments) {
  60.         logger.debug(msgFormat, arguments);
  61.     }
  62.    
  63.     public void warn(String msgFormat, Object... arguments) {
  64.         logger.warn(msgFormat, arguments);
  65.     }
  66. }
复制代码


-----------------------------------------------
自定义异常
  1. public class MyException extends RuntimeException {

  2.     private static final long serialVersionUID = 1L;
  3.     /**
  4.      * 异常类型,见ResultCode
  5.      */
  6.     private int status;
  7.     /**
  8.      * 描述
  9.      */
  10.     private String msg;

  11.     public MyException(){
  12.         super();
  13.     }
  14.    
  15.     public MyException(int status , String msg){
  16.         super(msg);
  17.         this.status = status;
  18.         this.msg = msg;
  19.     }
  20.    
  21.     public MyException(int status , String msg, Throwable t){
  22.         super(msg,t);
  23.         this.status = status;
  24.         this.msg = msg;
  25.     }
  26.    
  27.     public MyException(Throwable t){
  28.         super("其它运行异常",t);
  29.         this.status = ResultCode.JAVA_RUNTIME_ERROR;
  30.         this.msg = "其它运行异常";
  31.     }
  32.    
  33.     public MyException(String msg){
  34.         super(msg);
  35.         this.status = ResultCode.JAVA_RUNTIME_ERROR;
  36.         this.msg = msg;
  37.     }
  38.    
  39.     public MyException(String msg , Throwable t){
  40.         super(msg,t);
  41.         this.status = ResultCode.JAVA_RUNTIME_ERROR;
  42.         this.msg = msg;
  43.     }

  44.     public int getStatus() {
  45.         return status;
  46.     }

  47.     public void setStatus(int status) {
  48.         this.status = status;
  49.     }

  50.     public String getMsg() {
  51.         return msg;
  52.     }

  53.     public void setMsg(String msg) {
  54.         this.msg = msg;
  55.     }
  56. }
复制代码

-----------------------------------------------
使用
  1. private LoggerDecorate logger = LoggerDecorateFactory.getLogger(this.getClass());

  2. logger.error("切面打印请求失败", e);

复制代码
  1. throw new MyException(ResultCode.PARAM_ERROR, "新增MsgUuid={"+uuid+"}失败,msgType={"+msgType+"}不存在");
  2. try {。。。} catch (MyException e) {logger.error("切面打印请求失败", e);}
复制代码










像猪一样乐观,像鱼一样自由
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|江苏金智教育信息股份有限公司 ( 系统管理员:binmeng@wisedu.com  

GMT+8, 2021-4-23 08:13

Powered by Discuz! X3.2

© 2015 Design: www.wisedu.com

快速回复 返回顶部 返回列表