[Java工具] Eclipse/MyEclipse配置使用Log4j记录日志

Log4j是一个支持以文件形式记录程序异常信息、运行状态的开源项目。在Eclipse/MyEclipse中使用Log4j,主要可分为四大步骤;

一、在项目中加入log4j所使用的Jar文件;

(1)官方下载地址:http://logging.apache.org/log4j/1.2/download.html

(2)解压导入:eclipse中文操作:右键选择项目名称→构建路径→配置构建路径→面板选择 库,添加外部JAR;英文版:Project→properties→Java Build Path→面板选择 Libraries,Add Exernal JARs;添加完成后JRE系统库下面会出现Referenced Libraries(引用的库),此时就证明已经成功导入。

二、编写log4j.properties文件,配置日志信息

配置路径:选中项目中的src文件右键 new(新建)→File(文件)→输入文件名和文件后缀名 log4j.properties

配置代码如下:

### 设置Logger输出级别和输出目的地 ###
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
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出日志到文件jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%p %d %F %M  %m%n

三、在程序中使用:

(1)日志路径:当完成配置后,程序所出现的异常或运行状态(根据需要选择),会被在项目的根目录创建.log日志文件。

public class Xrror {
	//声明并实例并调用方法,括号内Xrror为类名
	private static Logger logger = Logger.getLogger(Xrror.class.getName());

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		try {
			System.out.print("被除数:");
			int numa = input.nextInt();
			logger.debug("被除数:" + numa);
			System.out.print("除数:");
			int numb = input.nextInt();
			logger.debug("除数:" + numb);
			System.out.println("运算结果:" + String.format("%d/%d=%d", numa, numb, numa / numb));
			logger.debug("运算结果:" + String.format("%d/%d=%d", numa, numb, numa / numb));
		} catch (Exception e) {
			logger.error(e.getMessage());
		}
	}

以下是日志记录的数据:

四、扩展

前三步已经实现了log4j的配置和使用,以下内容可以作为补充。1.log4j中信息输出方法、2.日志及分类、3.输出级别、4.日志输出目的地、5.转换模式。

(1)log4j日志记录工具提供一系列方法输出不同级别的信息;

         public void debug / info / warm / error / fatal(Object msg);//上面的代码有debug调用的实例

         public void debug / info / warm / error / fatal(Object msg,Throwable);

(2)日志及分类:根据日志记录的内容不同可分为三种 ①SQL日志:记录系统执行的SQL语句;②异常日志:记录系统运行时的异常事件。③业务日志:记录系统运行时的状态,如登录、退出。

### 设置Logger输出级别和输出目的地 ###
log4j.rootLogger = debug,stdout,logfile //优先级

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender //ConsoleAppender 控制台目的地
log4j.appender.stdout.Target = System.out //Targe属性配置输出类型 默认 .out ,可选err
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出日志到文件jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender //FileAppender 文件目的地
log4j.appender.logfile.File=jbit.log  //输出文件名
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout //Layout日志布局类型
log4j.appender.logfile.layout.ConversionPattern=%p %d %F %M  %m%n //ConversaionPattern 输出属性

(3)第一行代码中的debug是日志记录器的输出级别,除了debug 还有

fatal:导致程序退出的严重错误;error:不影响程序运行的错误;warm:警告,有潜在错误;info:宏观类级别上指明消息,强调程序的运行过程。debug:方法级别,如断点测试有利用调试程序。

输出级别:fatal>error>warm>info>debug 返回当前级别及以前的消息,如error只能返回本身和fatal的消息。

(4)Appender 日志输出目的地:debug后面两个stdout和logfile又代表着什么呢? 

       输出信息到控制台和文件,可能注意到其中两个关键词的不同。如输出到控制台的代码 apender后面是stdout,等号后面的代码是org.apache.log4j.ConsoleAppenderr、输出到文件的代码apender后面是logfile,最后面的代码关键词则是FileAppender。总的来说:stdout使用了ConsoleAppender,logfile使用了FileAppender;

      第二行代码的作用是写日志信息输出属性或命名。如控制台的是stdout.Target=System.out,代表着把日志信息写到控制台System.err;同理输出日志到文件的第二行代码则规定了,日志文件的名称jbit。

(5)Layout 输出日志布局类型:①HTMLLayout: ② SimpleLayout:输出格式:Level级别——日志消息 ③ PatternLayout:自定义格式;

      这里主要讲PatternLayout,因为配置文件用输出自定义格式比较广泛。通过倒数第二行代码,我们可以设置输出日志布局的类型,最后一行代码我们可以配置输出的参数列表

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout //Layout日志布局类型
log4j.appender.logfile.layout.ConversionPattern=%p %d %F %M %l %m %n //ConversaionPattern 输出属性

那么问题来了,代码中的%p %d又具体代表什么含义呢?


DEBUG 2019-06-02 22:11:11,673 Xrror.java format Error.Xrror.format(Xrror.java:16) 被除数:20 
DEBUG 2019-06-02 22:11:22,450 Xrror.java format Error.Xrror.format(Xrror.java:19) 除数:10 
DEBUG 2019-06-02 22:11:22,454 Xrror.java format Error.Xrror.format(Xrror.java:21) 运算结果:20/10=2 

  %p 优先级 - %d 时间 - %F 文件名 - %M  方法名- %l 包、类、方法名、错误行数 - %m 指定消息 - %n换行

我们根据.log中的日志信息,在和下面一一对应,你了解了这些属性的含义了吗?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值