代码案例
package jabao; import org.apache.log4j.Logger; public class Hello { //根据当前类创建记录器 private Logger log=Logger.getLogger(Hello.class); public void show (int i,int j){ try { int a=i/j; System.out.println(90); }catch (Exception ex){ //打印堆栈的信息,异常内容 //ex.printStackTrace(); //调用方法记录日志 log.debug("操作有误",ex); } } public static void main(String[] args) { Hello h=new Hello(); h.show(12,0); } }
二、Log4j.properties
#设置日志记录的级别,以及需要的输出位置 log4j.rootLogger=debug,a,b #设置输出源 a的信息 #设置 a 使用的记录工具 log4j.appender.a=org.apache.log4j.ConsoleAppender #使用Syetem.out 进行输出 log4j.appender.a.Target=System.out #设置输出的格式的布局 log4j.appender.a.layout=org.apache.log4j.PatternLayout #设置数据显示模板 log4j.appender.a.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c %l %M %m%n log4j.appender.b=org.apache.log4j.FileAppender log4j.appender.b.File=test.log log4j.appender.b.layout=org.apache.log4j.PatternLayout log4j.appender.b.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
三、test.log(运行自动产生)
2018-05-16 14:43:39 jabao.Hello.show(Hello.java:15) 操作有误 java.lang.ArithmeticException: / by zero at jabao.Hello.show(Hello.java:10) at jabao.Hello.main(Hello.java:21) 2018-05-16 14:46:20 jabao.Hello.show(Hello.java:17) 操作有误 java.lang.ArithmeticException: / by zero at jabao.Hello.show(Hello.java:10) at jabao.Hello.main(Hello.java:23)
设置过程log4j的使用方式
a)添加log4j需要的jar文件到 项目中
并把jar 添加到类路径
b)在 src下创建名为 log4j.properties 的资源文件
c)在资源文件中添加 日志输出的配置
设置日志的级别和输出的源
日志的四个级别
error>warn>info>debug如果设置的级别为 warn 那么 通过 info() 和debug() 方法写入的信息 无法记录
#设计日志记录的级别和输出源的名称
#注意 设置输出源名是 该名称必须存在
log4j.rootLogger=debug,a,b#设置每一个源的配置
#指定添加日志的方式
log4j.appender.a=org.apache.log4j.ConsoleAppender#设置输出信息的目标
log4j.appender.a.Target=System.out#设置输出信息的布局
log4j.appender.a.layout=org.apache.log4j.PatternLayout#设置模板布局的格式
log4j.appender.a.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%nlog4j.appender.b=org.apache.log4j.FileAppender
#指定文件的名称和位置
log4j.appender.b.File=D:\\test.loglog4j.appender.b.layout=org.apache.log4j.PatternLayout
log4j.appender.b.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
-----------------------------
%d:表示日期
%c:表示异常类型
% l:表示产生记录日志的位置
%M :异常的方法名
%m: 表示日志的堆栈信息
%n :表示换行
%t 发生异常的线程名称
%p 记录日志的级别
d)在java中使用日志工具记录异常信息
注意:必须引入
org.apache.log4j.Logger;
i)在Java类中创建日志记录记录器的对象
private Logger log=Logger.getLogger(类名,class)
ii)使用Logger 中方法记录信息
log.error()
log.warn()
log.info()
log.debug()
Log4j记录的内容给谁看
a)运维,维护人员
b)产品经理,了解该项目中那些模块使用的频率
c)可以通过日志 对数据的恢复
异常-——-——-——
处理异常后,保证程序可以继续运行
public class Jiejuekehu { private static Logger log=Logger.getLogger(Jiejuekehu.class); public static void main(String[] args) { //记录用户操作了几次 // 不管成功失败都要记录 int i=0; while(true){ Scanner in=new Scanner(System.in); try { System.out.print("a:"); int a=in.nextInt(); System.out.print("b:"); int b=in.nextInt(); System.out.println(a+b); } catch (Exception e) { log.debug("",e); System.out.println("你输入有误,请重新输入"); } finally{ i++; } } } }
-——-通过异常解决输入字符错误停止程序的问题;提示 客户
System.out.println("你输入有误,请重新输入");
log.debug("",e);
通过log4j.记录错误信息;方便以后运维人员对系统进行维护;