try{ }catch(Exception e){ e.printStackTrace(); log.error("配件导出excel错误:", e.fillInStackTrace()); } 以上在控制台打印的信息可以明确异常的位置,log写入信息没有实际价值信息. try{ }catch(Exception e){ e.printStackTrace(); log.error("配件导出excel错误:", e); } 这样写控制台与log错误信息一致. le…
第一个bug的起始,是在线上日志发现一个频繁打印的异常——java.lang.ArrayIndexOutOfBoundsException.但是却没有堆栈,只有一行一行的ArrayIndexOutOfBoundsException.没有堆栈,不知道异常是从什么地方抛出来的,也就不能找到问题的根源,更谈不上解决.题外,工程师在用log4j记录错误异常的时候,我看到很多人这样用(假设e是异常对象):log.error(“发生错误:”+e);或者:log.error(“发生错误:”+e.getMess…
一.问题场景 使用Logger.error方法时只能打印出异常类型,无法打印出详细的堆栈信息,使得定位问题变得困难和不方便. 二.先放出结论 Logger类下有多个不同的error方法,根据传入参数的个数及类型的不同,自动选择不同的重载方法. 当error(Object obj)只传入一个参数时会将异常对象作为Object使用,并最终当做String打印出来,当使用两个参数error(String message, Throwable t),且第二个参数为Throwable时,才会将完整的异常堆…
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="STDOUT" class="…
1.在工程中导入log4j-1.2.15.jar的jar包2.新建测试类 package control; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; /** * @author janeky * Log演示程序 */ public class Log { //Logger实例 public Logger loger; //将Log类封装成单实例的模式,独立于其他类.以后要用到日志的地…
遇到的问题 今天遇到一个线上的BUG,在执行表单提交时失败,但是从程序日志中看不到任何异常信息. 在Review源代码时发现,当catch到异常时只是输出了e.getMessage(),如下所示: logger.error("error: {}, {}", params, e.getMessage()); 在日志中看不到任何信息,说明e.getMessage()返回值为空字符串. 原因分析 先来看一下Java中的异常类图: Throwable是Java中所有异常信息的顶级父类,其中的成…
1.多用try,catch;不要一个try,catch包含所有内容 好处:不同模块抓取不同异常,某一模块异常挂了,不影响其他模块的程序的进行 2.多写几个catche:尽量不要使用Exception这个大异常去包容所有异常 不要为了追求代码的简练,try,catch只写一个,使用Exception去抓取所有可能的异常,这只是理想状态,程序出错不是直接打印出来异常就完事了,应该在catche抓取异常的同时一方面给程序员输出错误日志,一方面做些处理反馈给用户,比如一些提示错误框或者错误页面,不能让用…
配置: ### set log levels ### D只有一个E也只有一个 log4j.rootLogger = debug,stdout,D,E ### 输出到控制台 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout…
1.1 根据用户名称模糊查询用户信息 根据用户名模糊查询用户信息,只需要我们更改映射文件中的sql语句.其他的内容跟上一篇的内容是一样的 1.2添加根据用户名称模糊查询用户信息的sql语句 实例中是查询员工信息emp表,所以mapper文件sql语句改为以下内容: <!-- 根据用户名模糊查询 ${} 表示sql拼接 将接受的参数不加任何修饰拼接在sql中 ${value}接受参赛的内容,如果传入的简单类型,${}中必须使用value %表示任意字符 --> <select id=&qu…
Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console.file等.Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别. 解答:Log4J分 为OFF.FATAL.ERROR.WARN.INFO.DEBUG.ALL或者您定义的级别.Log4j建议只使用四个级别,优先级从高到低分别是 ERROR.WARN.INFO.DEBUG.通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关.比如在这里定义了INFO…