2019独角兽企业重金招聘Python工程师标准>>>
Log4jMain.java
- package log4;
- import java.io.PipedReader;
- import java.io.PipedWriter;
- import java.io.Writer;
- import org.apache.log4j.Appender;
- import org.apache.log4j.Logger;
- import org.apache.log4j.WriterAppender;
- /**
- *
- * 类描述:
- * 截取 WriterAppender 输出流
- * 控制 输出流 目地的
- * @author XXX
- * @date 2010-3-16 创建
- * @version 1.0
- */
- public class Log4jMain {
- public static void main(String[] arg) {
- /**
- * 获取记录器,通用的写法
- * Logger root = Logger.getLogger(Log4jMain.class); 本类类名
- * 取得的记录器名称为 "Log4jMain"
- * 而 log4j.rootLogger 为所有记录器的父类
- * 没有配置子记录器时,子类都继承父类的 level and Appender 所以会输出所有 log
- *
- * 配置子记录器:log4j.logger.Log4jMain ,将按子记录器的 level and Appender 输出 log
- */
- Logger root = Logger.getLogger("Log4jMain"); // @1
- try {
- // 获取子记录器的输出源
- Appender appender = root.getAppender("WriterAppender");
- // 定义一个未连接的输入流管道
- PipedReader reader = new PipedReader();
- // 定义一个已连接的输出流管理,并连接到reader
- Writer writer = new PipedWriter( reader) ;
- // 设置 appender 输出流
- ((WriterAppender) appender).setWriter(writer);
- Thread t = new AppenderThread(reader);
- t.start();
- // 打印 log
- Logger logger = Logger.getLogger("Log4jMain"); // @2 与@1取到是同一个记录器
- logger.error("This is error");
- logger.info("This is info");
- logger.debug("This is debug");
- logger.fatal("This is fatal");
- } catch (Exception e) {
- }
- }
- }
AppenderThread.java
- package log4;
- import java.io.PipedReader;
- import java.util.Scanner;
- import log4gui.log4j.LogTest;
- /**
- *
- * 类描述:
- * 不间断地扫描输入流
- * 将扫描到的字符流打印在屏目 和传送到GUI组件
- * @author xxx
- * @date 2010-3-16 创建
- * @version 1.0
- */
- public class AppenderThread extends Thread {
- PipedReader reader;
- public AppenderThread(PipedReader reader) {
- this.reader = reader;
- }
- public void run() {
- // 不间断地扫描输入流
- Scanner scanner = new Scanner(reader);
- // 将扫描到的字符流打印在屏目
- while (scanner.hasNext()) {
- System.out.println(scanner.nextLine());
- // 实现将字符流打印在GUI组件上 减少代码量 就不
- }
- }
- }
log4j.properties
- log4j.rootLogger= DEBUG
- log4j.logger.Log4jMain = INFO,WriterAppender
- log4j.appender.WriterAppender=org.apache.log4j.WriterAppender
- log4j.appender.WriterAppender.Threshold=debug
- log4j.appender.WriterAppender.layout=org.apache.log4j.PatternLayout
- log4j.appender.WriterAppender.layout.ConversionPattern=%d{ISO8601} - %p - %m%n
- # Configure appender stdout
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{dd.MM.yyyy HH:mm:ss} %-5p %-20c - %m%n
下面是几个关于log4j配置的网址,平时只是能把日志输出到文件就可以,也没理解的这么细,对学习log4j还是有一些帮助:
http://wenda.tianya.cn/wenda/thread?tid=0d69e2b909eeb918
http://www.blogjava.net/xzclog/archive/2006/09/04/67481.html