网上有关LOG4J的配置很多,其中也有不少提到:“可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等”。我想把目志输出到JTextArea,网上搜了很久,没找到一个好的例子,无意间看到一个网友的贴子,有一段代码,下下来,一试,还不行,经过几翻调试,终于可以了,加了一些注释,代码贴在下面,希望对有需要人的有所帮助。
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
分享到:
相关推荐
《Log4j将System.out重定向到Log4j输出详解》 在日志管理中,Log4j是一款广泛使用的开源日志框架,它允许开发者灵活地控制日志信息的输出方式和级别。当我们习惯于使用`System.out.println()`进行调试时,如何将...
Log4j主要包括三个关键组件:Logger(日志器)、Appender(输出端)和Layout(布局)。Logger负责生成日志消息,Appender负责将这些消息输出到指定的目标,如控制台、文件、数据库等,而Layout则定义了日志消息的...
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式...
Log4j的输出格式主要通过`Layout`组件来控制,最常见的`PatternLayout`允许我们使用占位符来指定输出格式。例如,`%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n`会输出时间戳、日志级别、logger名称、行号和日志...
标题"log4j的eclipse工程,输出到文件的方式配置log4j"表明我们关注的是在Eclipse开发环境中如何利用log4j框架将日志信息输出到文件。Log4j是Apache的一个开源项目,它提供了一个灵活的日志系统,允许开发者在运行时...
Log4j 的核心组件包括日志记录器(Logger)、日志输出目的地(Appender)和日志格式化器(Layout)。 二、配置 Log4j.properties 文件 在 SSM 整合项目中,配置 Log4j.properties 文件是必不可少的步骤。该文件...
在`log4j.properties`中,可能会定义多个Appender,比如将日志输出到控制台(ConsoleAppender)和文件(FileAppender)。 3. **Layouts**: Layout定义了日志信息的格式。常见的Layout有PatternLayout,可以自定义...
本文将深入讲解如何配置log4j以实现日志输出到控制台和文件,并提供相关代码实例和案例分析。** ### 一、Log4j简介 Log4j是Apache组织开发的一个开源项目,用于生成日志信息。它提供了灵活的配置方式,支持多种输出...
WriterAppender是Log4j的一个组件,它允许我们将日志信息写入到任何实现了java.io.Writer接口的对象,如System.out、文件、数据库等。在项目中,我们使用UTF-8编码,这是国际化的标准,确保日志中的非ASCII字符能够...
**标题解析:** "log4j输出日志到数据库表中" 指的是使用Log4j这个流行的Java日志框架,将日志记录存储在数据库的特定表中,而不是默认的文本文件或控制台。这通常是出于日志管理、分析和长期存储的需求。 **描述...
在Web应用中,如使用的是Servlet环境,可以通过在`web.xml`中配置`ContextLoaderListener`来加载Log4j配置,同时,我们还可以创建一个Servlet,当接收到特定请求时,更新Log4j配置。 ```xml <!-- web.xml 示例 --> ...
这个工具简化了检测过程,使得非专业安全人员也能快速判断自己的系统是否受到Log4j漏洞的影响。通过下载并解压"Log4j2_detect_gui.zip",你可以得到一个直观易用的界面,通过简单的操作即可完成扫描。 在运行Log4j2...
本文将深入探讨如何在 MyBatis 中配置 Log4j,实现日志同时输出到后台控制台和文件。 1. **日志框架集成** 在 MyBatis 中,我们通常会依赖日志框架如 Log4j、Logback 或 JDK 内置的日志系统。Log4j 以其强大的功能...
4. 定义日志输出格式:通过配置log4j.appender.CATALINA.layout为org.apache.log4j.PatternLayout,可以定义日志的格式。例如,可以设置为%d{yyyy-MM-ddHH:mm:ss.SSS}%p[%t]%c|%m%n来让日志格式和Log4j保持一致。 5...
Log4j的核心组件包括Logger、Appender和Layout。Logger负责生成日志事件,Appender则负责接收这些事件并将其输出到指定的目标(如控制台、文件、数据库等),而Layout则是负责格式化日志事件的内容。 在"Log4j多...
log4j-jmx-gui-2.0.2-javadoc.jar, log4j-jmx-gui-2.0.2-sources.jar, log4j-jmx-gui-2.0.2.jar, log4j-nosql-2.0.2-javadoc.jar, log4j-nosql-2.0.2-sources.jar, log4j-nosql-2.0.2.jar, log4j-over-slf4j-1.5.0....
Appender是Log4j中负责将日志信息输出到指定目的地的组件,例如文件、控制台、网络等。以下是一个简单的`log4j.properties`配置示例: ```properties # 配置文件开头 log4j.rootLogger=DEBUG, appender1, appender2...
* Appender:Appender 是用来指明将所有的 log 信息存放到什么地方,Log4j 中支持多种 Appender,如 console、files、GUI components、NT Event Loggers 等。 * Layout:Layout 的作用是控制 Log 信息的输出方式,也...
**日志组件Log4j详解** 日志组件在软件开发中扮演着至关重要的角色,它帮助开发者记录程序运行过程中的信息、错误和调试细节。Log4j是Apache组织提供的一款开源的日志记录工具,广泛应用于Java平台。Log4j的设计...
此次提及的`log4j-api-2.12.4.jar`和`log4j-core-2.12.4.jar`是Log4j 2框架的两个关键组件,版本号为2.12.4,这个版本主要修复了之前版本中可能存在的安全漏洞。 **log4j-api-2.12.4.jar** 是Log4j 2框架的API模块...