java得到距离指定时间num时间的时间、以及反射调用方法、Log日志配置信息

来源:互联网 发布:java http获取cookie 编辑:程序博客网 时间:2024/05/17 12:52
public static Date calDate(Date date,int type, int num) {   Calendar c = Calendar.getInstance();   c.setTime(date);   c.add(type, num);   return c.getTime();}
方法   传入值:  时间、时间类型(分、秒 、时) 间隔
DateUtil.calDate(new Date(), Calendar.MINUTE,0)
获取当前时间
DateUtil.calDate(new Date(),Calendar.MINUTE,time/60)
获取当前时间往后推迟3分钟后的时间
--------------------------------
通过request 获取调用方的  IP ,URL, METHOD 等信息
public void setRequestInfo(HttpServletRequest request) {    this.ip = request.getRemoteAddr();    this.inter = request.getRequestURI();    this.method = request.getMethod();    this.startTime = DateUtil.dateToString(new Date(), DateUtil.hms);}

---------------------------
执行命令封装 ,java程序执行linux命令
public static String execCmd(String cmd){    Process process = null;    StringBuilder result = new StringBuilder();    LOGGER.info("要执行的命令:"+cmd);    try {        // 在单独的进程中执行指定的字符串命令        process = Runtime.getRuntime().exec(cmd);        // 向标准输出或者标准错误输出写出数据        BufferedReader stdout = new BufferedReader(new InputStreamReader(process.getInputStream()));        BufferedReader stderr = new BufferedReader(new InputStreamReader(process.getErrorStream(),"GBK"));        // 读取输出        String line;        while ((line = stdout.readLine()) != null){            LOGGER.info("标准输出:"+line);            result.append(line);        }        while ((line = stderr.readLine()) != null){            LOGGER.info("错误输出:"+line);            result.append(line);        }        // shell命令或者脚本的返回值 0 表示正常终止;否则,就表示异常失败        int status = process.waitFor();        LOGGER.info("命令执行状态:"+status);        stdout.close();        stderr.close();    } catch (IOException e) {        e.printStackTrace();        LOGGER.info("执行命令时IO异常:"+e.fillInStackTrace());    } catch (InterruptedException e) {        e.printStackTrace();        LOGGER.info("命令执行时被中断:"+e.fillInStackTrace());    } finally {        // 销毁子线程        if(null != process){            process.destroy();        }    }    String resultStr = result.toString();    result = null;    LOGGER.info("命令执行结果:"+resultStr);    return resultStr;}

----------------------------
用反射的机制来调用方法
public static Object executeInvoke(String classUrl, String methodName, Object[] methodParameters, Class ... parameterClasses){    try {        Class cls = Class.forName(channelUrl +"." +classUrl);        Object obj = cls.newInstance();        // 声明方法        Method m = cls.getDeclaredMethod(methodName, parameterClasses);        // 调用方法        return m.invoke(obj, methodParameters);    } catch (ClassNotFoundException e) {        e.printStackTrace();    } catch (InstantiationException e) {        e.printStackTrace();    } catch (IllegalAccessException e) {        e.printStackTrace();    } catch (NoSuchMethodException e) {        e.printStackTrace();    } catch (InvocationTargetException e) {        e.printStackTrace();    }    return null;}
* @param classUrl 包名+类名* @param methodName 执行方法* @param methodParameters 参数值* @param parameterClasses 参数类型

-------------------------------------------
自定义异常处理
另外在spring-mvc里面定义该类
<!-- 自定义的全局异常处理器 --><bean class="cn.huimin100.pay.center.service.support.exception.ExceptionResolver"></bean>

public class ExceptionResolver implements HandlerExceptionResolver {    private Logger logger = Logger.getLogger(ExceptionResolver.class);    /**     * @description 解析异常     * @param request     * @param response     * @param o     * @param e 异常类型     * @return 将内容写入response中,无需跳转界面     */    @Override    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception e) {        logger.info("进入全局异常处理器");        String result = "";        // 将请求参数Map,转成BasicOrderModel实体        Map<String, String> reqParam = MapUtil.getParams(request.getParameterMap());        BasicOrderModel basicOrderModel = MapUtil.mapToBean(BasicOrderModel.class, reqParam);        basicOrderModel.setRequestInfo(request);        // 解析异常类型        if(e instanceof BusinessException){            BusinessException businessException = (BusinessException)e;            result = ReplyUtil.failureReply(businessException.getMsg(), basicOrderModel, reqParam);        }else{            if(ParamVerify.checkParamIsEmpty(e.getMessage())){                result = ReplyUtil.failureReply(ExceptionCode.E00001, basicOrderModel, reqParam);            }else{                result = ReplyUtil.failureReply(e.getMessage(), basicOrderModel, reqParam);            }        }        // 将内容写入response中        try {            response.setContentType("text/json; charset=UTF-8");            response.getWriter().println(result);            response.getWriter().flush();            response.getWriter().close();        } catch (Exception e1) {            e1.printStackTrace();            logger.info("向HttpServletResponse写入异常信息失败:"+e1.fillInStackTrace());        }        return null;    }

--------------------------
logger日志的自定义 
log4j.rootLogger=INFO,A1,R#日志输出到控制台log4j.appender.A1=org.apache.log4j.ConsoleAppender#输出日志到控制台的方式log4j.appender.A1.Target=System.out#使用灵活布局log4j.appender.A1.layout=org.apache.log4j.PatternLayout#定义输出格式log4j.appender.A1.layout.ConversionPattern=[%d{MM-dd HH:mm:ss}][%X{title}]%m%n#每天产生一个日志文件log4j.appender.R=org.apache.log4j.DailyRollingFileAppender#日志输出地址log4j.appender.R.File=/tomcat/logs/debug/datelog4j.appender.R.Append=truelog4j.appender.R.encoding=utf-8#使用灵活布局log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.DatePattern='_'yyyyMMdd'.txt'#定义输出格式log4j.appender.R.layout.ConversionPattern=[%d{MM-dd HH:mm:ss}][%X{title}]%m%n#订单日志单独打印设置log4j.logger.cn.huimin100.pay.center.service.support.util.reply.OrderLogUtil=INFO,orderLoglog4j.appender.orderLog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.orderLog.File=/tomcat/logs/access/datelog4j.appender.orderLog.Append=truelog4j.appender.orderLog.encoding=utf-8log4j.appender.orderLog.layout=org.apache.log4j.PatternLayoutlog4j.appender.orderLog.DatePattern='_'yyyyMMdd'.txt'

阅读全文
0 0
原创粉丝点击