- 浏览: 1791436 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
奔跑的小牛:
例子都打不开
如何使用JVisualVM进行性能分析 -
蜗牛coder:
好东西[color=blue][/color]
Lucene学习:全文检索的基本原理 -
lovesunweina:
不在haoop中是在linux系统中,映射IP的时候,不能使用 ...
java.io.IOException: Incomplete HDFS URI, no host -
evening_xxxy:
挺好的, 谢谢分享
如何利用 JConsole观察分析Java程序的运行,进行排错调优 -
di1984HIT:
学习了~~~
ant使用ssh和linux交互 如:上传文件
官方网站:http://logging.apache.org/log4j/index.html:
废话不多说,切入主题,下面都是基础的应用。后面我会写有关扩展的应用,使它更听话。
读取配置文件
package org.cjj.log4j.config.xml; import java.net.URL; import org.apache.log4j.xml.DOMConfigurator; /** * 单实例 读取log4j配置文件,初始化log4j * * @author cjj * */ public class Log4jXMLConfig { private static Log4jXMLConfig instance; public static synchronized Log4jXMLConfig initia() { if (instance == null) { return new Log4jXMLConfig(); } return instance; } private Log4jXMLConfig() { final URL url = Log4jXMLConfig.class.getResource("log4j.xml"); DOMConfigurator.configure(url); } }
配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- ========================== 自定义输出格式说明================================ --> <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL --> <!-- #%r 输出自应用启动到输出该log信息耗费的毫秒数 --> <!-- #%c 输出所属的类目,通常就是所在类的全名 --> <!-- #%t 输出产生该日志事件的线程名 --> <!-- #%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” --> <!-- #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 --> <!-- #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) --> <!-- ========================================================================== --> <!-- ========================== 输出方式说明================================ --> <!-- Log4j提供的appender有以下几种: --> <!-- org.apache.log4j.ConsoleAppender(控制台), --> <!-- org.apache.log4j.FileAppender(文件), --> <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), --> <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), --> <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) --> <!-- ========================================================================== --> <!-- 输出到日志文件 --> <appender name="filelog_appender" class="org.apache.log4j.RollingFileAppender"> <!-- 设置File参数:日志输出文件名 --> <param name="File" value="log/testlog4jxml_all.log" /> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --> <param name="Append" value="true" /> <!-- 设置文件大小 --> <param name="MaxFileSize" value="1MB" /> <!-- 设置文件备份 --> <param name="MaxBackupIndex" value="10000" /> <!-- 设置输出文件项目和格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p (%c:%L)- %m%n" /> </layout> </appender> <!-- 输出到日志文件 每天一个日志 --> <appender name="filelog_daily" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="log/daily.log" /> <param name="DatePattern" value="'daily.'yyyy-MM-dd'.log'" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] (%c:%L) - %m%n" /> </layout> </appender> <!-- 输出到控制台中 --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p: %m%n" /> <!-- "%-5p: [%t] [%c{3}.%M(%L)] | %m%n" --> </layout> </appender> <appender name="EMAIL_QQ" class="org.apache.log4j.net.SMTPAppender"> <param name="Threshold" value="INFO"/> <param name="BufferSize" value="128" /> <param name="SMTPHost" value="smtp.qq.com" /> <param name="SMTPUsername" value="cjjvictory" /> <param name="SMTPPassword" value="***" /> <param name="From" value="cjjvictory@qq.com" /> <param name="To" value="cjjvictory@gmail.com" /> <param name="Subject" value="测试邮件发送" /> <param name="LocationInfo" value="true" /> <param name="SMTPDebug" value="true" /> <layout class="org.cjj.log4j.extend.PatternLayout_zh"> <param name="ConversionPattern" value="[%d{ISO8601}] %-5p %c %m%n"/> </layout> </appender> <!--- 异步测试,当日志达到缓存区大小时候执行所包的appender --> <appender name="ASYNC_test" class="org.apache.log4j.AsyncAppender"> <param name="BufferSize" value="10"/> <appender-ref ref="EMAIL_QQ"/> </appender> <!-- 设置包限制输出的通道 --> <category name="org.cjj" additivity="false"> <!-- 日志输出级别,起码可以有5个级别,可以扩展自己的级别,邮件发送必须是ERROR级别不好用,所以最后自己扩展一个邮件发送级别 --> <level value="ERROR" /> <appender-ref ref="filelog_daily" /> <appender-ref ref="daily_appender" /> <appender-ref ref="console" /> <appender-ref ref="ASYNC_test" /> </category> </log4j:configuration>
邮件乱码问题:
邮件发送的布局采用了org.cjj.log4j.extend.PatternLayout_zh,因为原来的org.apache.log4j.PatternLayout会有乱码,所以重写一个方法既可。可能方法有点野蛮,所以那位有好的方法还请指教。
package org.cjj.log4j.extend; import org.apache.log4j.PatternLayout; public class PatternLayout_zh extends PatternLayout { @Override public String getContentType() { return "text/html;charset=GBK"; } }
评论
5 楼
lingpeng2009
2009-08-09
学习啦!!谢谢LZ
4 楼
so_fast
2009-08-05
总结的很好呀.让人很容易理解,
支持楼主.....
支持楼主.....
3 楼
lkjust08
2009-08-05
不错,比我写的那个log4j使用总结要好,如果能把输入到 数据库的部分加上就好了,这样就全了,lz可以补上去,期待。
2 楼
elf8848
2009-08-05
老朋友过来看看
1 楼
fishice
2009-08-04
发表评论
-
如何使用JVisualVM进行性能分析
2011-09-25 22:32 84995地址:https://visualvm.dev.java.ne ... -
JDK5中的concurrent包、线程池
2011-02-19 23:43 5095concurrent并发包里面几个 ... -
如何利用 JConsole观察分析Java程序的运行,进行排错调优
2010-11-12 18:38 187441一、JConsole是什么 从Java 5开始 引入 ... -
gentoo下 JAVA生成图片的问题 以及JFreeChart的图片问题
2010-11-05 17:21 6894=============================== ... -
JAVA NIO 详解Buffer类
2010-10-19 11:21 16588讲得很好,转载一下:http://www.java1995 ... -
简单的记录下 jconsole 查看远程机器的JAVA程序运行状况
2010-09-07 14:31 1799简单实用 远端: java \ ... -
项目管理 进度表
2010-06-27 14:43 4013项目管理中很重要的一部分 进度管理,进度管理又牵扯到进度表 ... -
JAVA基础 对象克隆 实现java.lang.Cloneable接口
2010-04-23 13:46 6099先来看看JDK的解释: ... -
深入浅出Java 类加载器
2010-03-05 11:42 4520简介: 类加载 ... -
Jave EE 6特性:依赖注入、Bean验证和EJB增强
2009-12-18 16:19 2103Java EE 的最新版本提供 ... -
JVM优化之调整大内存分页(LargePage)
2009-11-26 12:50 4240http://kenwu.me/tune-large-page ... -
java内存模型详解
2009-11-26 12:30 2487好读书求甚解,共享展 ... -
JVM调优总结(一)一些概念
2009-11-24 14:43 1494原文地址:http://pengjiahe ... -
CentOS 5.2下配置Java和TOMCAT环境
2009-10-17 14:29 3779安装JDK: 1、下载解压(tar zxvf jdk.. ... -
web项目定时执行任务
2009-08-27 18:19 4336xml文件内容-监听器 < ... -
JAVA多线程的控制JAVA 5.0
2009-08-20 13:38 20022在Java 5.0之前启动一个任务是通过调用Thre ... -
JDK自带VM分析工具jps,jstat,jmap,jconsole
2009-08-09 10:24 35275一、概述 SUN ... -
获取Servlet运行环境信息-Servlet自身信息、Servlet服务器端信息和Servlet客户端信息
2009-07-08 15:01 7227在Servlet中可以很方便的获取各种运行环境信息,这些信 ... -
使用Perf4J进行性能分析和监控
2009-06-19 10:28 3571作者 Alex Devine 译者 崔 ... -
JAVA版PCX图象的RLE算法压缩与解压缩
2009-05-26 17:09 6037丰富JE的博客,把上大学时候的一个算法,搬过来,大概是2007 ...
相关推荐
Log4j还可以与其他组件结合,如SLF4J(Simple Logging Facade for Java),提供更灵活的日志抽象层,或者通过Logback作为后端实现,提高日志处理性能。 总之,Log4j是Java开发者必备的工具之一,通过深入学习和实践...
最后,教程可能还会讨论log4j与其他日志框架(如logback、slf4j)的对比,以及如何在实际项目中选择合适的日志解决方案。在实际开发中,了解这些框架的优缺点和兼容性,可以帮助我们做出更明智的决策。 通过《log4j...
本篇文章将深入讲解如何在Java SE环境中使用Log4j进行“Hello, World!”的入门实践。 首先,我们需要理解Log4j的基本概念。Log4j由三个主要组件构成:Logger(日志器)、Appender(输出端)和Layout(布局)。...
“log4j详解与实践”可能深入讲解了如何在实际项目中应用Log4j;“log4j学习笔记”可能是个人学习过程中的总结,包含了作者的一些理解和技巧;“使用Log4j进行日志操作”可能专门针对Log4j的使用方法进行了详细讲解...
本文将详细讲解如何对C++新手入门Log4cxx,帮助初学者快速掌握这一工具。 首先,我们需要了解Log4cxx的基本架构。Log4cxx的核心概念包括Logger(日志器)、Appender(输出端)、Layout(布局)和Filter(过滤器)。...
10. **异常处理和日志记录**: 学习如何使用日志框架(如Log4j)记录程序运行信息,以及如何正确处理程序中的异常,提高程序的可维护性。 通过这些实例,初学者不仅可以了解Java语法,还能深入理解编程思维和解决...
**Spring AOP 入门及其实例讲解** 在软件开发中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种编程范式,它旨在提高代码的可重用性,减少冗余,并将关注点分离。Spring框架是Java开发中的一个流行...
本教程将详细讲解这些知识点,并通过丰富的示例和练习,帮助你逐步熟练运用MATLAB,无论是简单的计算任务还是复杂的工程项目,都能得心应手。无论你是学生还是工程师,都可以通过这个“百看不厌”的MATLAB入门教程,...
这个“JavaScript入门教程”将深入讲解这些概念,并通过实例帮助你巩固理解。无论你是完全的新手还是希望温故知新的开发者,都能从中受益。超清晰的PDF格式确保你能清晰地阅读每一个细节,愉快地学习JavaScript之旅...
下面将详细讲解Vue Router的基本使用步骤和动态路由的配置。 1. **安装Vue Router** 首先,你需要通过 npm (Node Package Manager) 来安装Vue Router。在命令行中输入以下命令: ``` npm install vue-router --...
log4j-1.2.15.jar是日志记录工具;commons-dbcp.jar和commons-pool.jar提供了数据库连接池服务,优化数据库资源的使用;slf4j-api-1.5.8.jar是简单日志门面,可以适配多种日志实现;struts2-spring-plugin-2.0.14....
本文从入门实例开始,讲解log4js的使用,以及如何跟Express进行整合。 入门例子 输出日志如下,包括日志打印时间、日志级别、日志分类、日志内容。 // started.js var log4js = require('log4js'); var logger = ...
入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不...
**Ajax(Asynchronous JavaScript and XML)简单入门讲解** Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术的出现极大地提升了用户体验,因为它允许页面在后台与服务器进行通信,而...
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%c{1}-%m%n log4j.logger.com.ibatis=DEBUG ``` ### iBatis核心概念 - **SqlMapClient**: 是...
数列分块是一种在处理大规模数据时常用的优化技巧,尤其在算法竞赛和程序设计中...这个“算法-数列分块入门 2(LibreOj-6278).pdf”文件应会详细阐述这一方法,并结合实例进行讲解,帮助读者掌握这一实用的算法技巧。
console.log('客户端:已经与服务端建立连接'); }); client.on('data', function(data) { console.log('客户端:收到服务端数据,内容为:' + data); }); client.on('close', function() { console.log('客户端:...
本资料《ORACLE数据库入门》主要介绍了Oracle数据库的基本架构、内存结构、实例、会话、事务以及SQL语句的执行过程,并简要讲解了数据库的启动与关闭。 1. **Oracle体系结构** - 物理结构:Oracle数据库的核心物理...