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
- java得到距离指定时间num时间的时间、以及反射调用方法、Log日志配置信息
- JAVA利用反射调用函数的时间
- 时间操作(Java版)—获取距离系统时间N天后的日期时间信息
- Java 时间 当前时间得到这周的时间
- 得到指定进程的运行时间
- 【转】 得到指定进程的运行时间
- JAVA得到一个指定日期范围内每天的开始时间和结束时间
- java获得指定时间的时间戳
- Java 以指定日期时间格式获取当前时间、以及每隔一秒刷新一次的方法------附带实例
- java 指定时间时间戳
- Java获取操作系统信息及指定时区的时间
- java得到当前时间
- java得到系统时间
- java得到视频时间
- Java 得到当前系统时间,时间转字符串,字符串转时间,以及求时间差
- java中获取距离当前时间最近的时间
- 得到系统时间的几个方法
- java--根据时间戳得到具体的时间
- Apache Shiro V1.2 SecurityUtils与SecurityManager的关系以及Subject的创建
- gym 101061-B RGB plants 裸矩阵快速幂
- 记录一个Tomcat启动参数修改,导致不识别<async-supported>的问题
- Eclipse之Hibernate插件报错
- 论文阅读——利用Binary Hash Codes的深度图像检索
- java得到距离指定时间num时间的时间、以及反射调用方法、Log日志配置信息
- 多个项目部署到一个tomcat下面报错:Choose unique values for the 'webAppRootKey' context-param in your web.xml files
- Vue学习笔记(1)安装vue
- Permutations
- Java多线程(一)、多线程的基本概念和使用
- 思维导图是什么?思维导图原理及其作用
- 移动终端数据传输方式
- docker学习笔记
- flask + redis 实现Server-Sent Event demo