log4j 是 Apache 的一开源项目,通过使用 log4j,程序员可以控制日志的输出级别,以及日志信息输送的目的地,包括控制台。文件等,还可以控制每一条日志的输出格式。

下面配置log4j 文件:

### direct log messages to stdout ###
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=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/log/log.txt
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=info, stdout ,file 

 1.输出级别(标灰的地方)

  log4j.rootLogger= error, stdout ,file 

输出优先级别 fatal > error > warn > info > debug
  日志记录器(Logger) 将只输出那些级别高于或等于它的信息。例如,级别为 error,将只输出 fatal 、error 级别的日志信息。

2.日志输出目的地 Appender (标灰的地方)
  
  log4j.rootLogger=error, stdout ,file
  其中,stdout、file 指的是日志输出的目的地的名字。
  log4j允许记录日志到多个输出目的地,一个输出目的地被称为一个Appender。log4j 中常用的 Appender 有以下两种
    》ConsoleAppender : 输出日志事件到控制台。通过 Targer 属性配置输出到 System.out 或 System.err,默认的目标是 System.out。  
    》FileAppenter : 输出日志事件到一个文件。通过 File 属性配置文件的路径及名称。
    在上面的试例当中有两个 Appender,第一个命名为 stdout,使用了 ConsoleAppender,通过配置 Target 属性,把日志信息写到控制台 System.out;第二个 Appender 命名为 file,使用了 FileAppender,通过配置File属性,把日志信息写到指定文件log.txt中。

 

3.日志布局类型 Layout

  Appender 必须使用一个与之相关联的布局类型 Layout,用来指定它的输出样式。log4j 中最常用的 Layout 有以下三种 。

  》HTMLLayout:格式化日志输出为 HTML 表格。

  》SimpleLayout :以一种非常简单的方式格式化日志输出,它输出级别 Level,然后跟着一个破折号“——”,最后是日志消息。

  》patternLayout:根据指定的转换模式格式化日志输出,从而支持丰富多样的输出格式。需要配置 layout。ConversionPattern属性,若没有配置该属性,则使用默认的转换模式。

 

4.转换模式 Conversionpattern 

对于 PatternLayout,需要配置 layout.ConversionPattern 属性,常用的配置参数及含义如下:

  》%d :用来设置输出日志的日期和时间,默认格式为ISO8601。也可以在其后制定格式,比如 %d{yyyy-MM-dd HH:mm:ss }  

  》%m:用来输出代码中指定的信息。

  》%n:用来输出一个回车换行符。

  》%l:用来输出日志事件的反生位置,包括类名、发生的线程,以及在代码中的行数。

  》%p:用来输出优先级,即 debug 、info 、warn 、 error 、fatal 等。

  》%F:用来输出文件名。

  》%M:用来输出方法名。

一个简单小例子:

首先导入jar 包:

  

import java.util.Scanner;
import org.apache.log4j.Logger;

public class MyTest_log4j {

    static Logger logger=Logger.getLogger(MyTest_log4j.class);
    public static void main(String[] args) {
        
        Scanner input = new Scanner(System.in);
        System.out.println("请输入除数:");
        int num1=input.nextInt();
        System.out.println("请输入被除数:");
        int num2=input.nextInt();
        try {
            System.out.println(String.format("%d /%d =%d", num1,num2,num1/num2));
            
        } catch (Exception e) {
            logger.error("除数不能为0");
        }
    }
}

 

 posted on 2017-08-15 17:21  【邵江】  阅读(169)  评论(0编辑  收藏  举报