- 浏览: 914680 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (445)
- 备忘 (0)
- java基础 (28)
- jsp (15)
- css (4)
- javascript (30)
- struts (7)
- servlet (2)
- struts2 (7)
- jdbc (16)
- hibernate (22)
- ibatis (0)
- jpa (1)
- spring (17)
- spring定时任务 (8)
- 整合开发 (12)
- JavaArticle (0)
- php (6)
- velocity (2)
- mysql (19)
- sqlserver (52)
- oracle (23)
- lucene (49)
- ajax (13)
- dwr (5)
- JFreeChart (1)
- service (14)
- tools (18)
- c#基础 (20)
- 程序安全 (0)
- 学习网站 (1)
- 社会需求 (2)
- flash (1)
- 流媒体 (1)
- java_code (1)
- htmlparser (1)
- 速动画教程 (5)
- 设计模式 (1)
- xml操作 (2)
- uml操作 (4)
- 测试 (1)
- linux (8)
- 版本控制 (4)
- 服务器 (12)
- 安全 (6)
- 美工 (2)
最新评论
-
Zhang_amao:
我想问一下, 你用的lucene版本和highligher的版 ...
使用Lucene的Highlighter实现文件摘要的自动提取 -
wangmengfanwangzhi:
博主,你的QQ是什么啊?有关于lucene的问题想要请教啊~~ ...
Lucene下载及测试 -
cutesunshineriver:
讲得很好,理解起来很顺,对个人学习的帮助性很大,谢谢博主。
velocity入门一 -
libin2722:
我这里有一个任务调度,在晚上3点时候会自动将数据库中某表的数据 ...
Lucene-2.2.0 源代码阅读学习(16) -
greatwqs:
java -cp $JVM_ARGS $classpath ...
java的cp命令
Log4j实在是很熟悉,几乎所有的Java项目都用它啊。但是我确一直没有搞明白。终于有一天我受不了了,定下心去看了一把文档,才两个小时,我终于搞明白了。一般情况下Log4j总是和Apache Commons-logging一起用的,我也就一起介绍吧。多了个东西不是更麻烦,而是更简单!
<[if !supportLists]>一、<[endif]>Log4j的简单思想
Log4j真的很简单,简单到令人发指的地步。不是要记录日志吗?那就给你一个Log,然后你用Log来写东西就行了,先来一个完整类示例:
package test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Test {
static Log log = LogFactory.getLog(Test.class);
public void log(){
log.debug("Debug info.");
log.info("Info info");
log.warn("Warn info");
log.error("Error info");
log.fatal("Fatal info");
}
/**
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
test.log();
}
}
别怕,看完这篇文章你就会觉得很简单了。
Log4j默认把日志信息分为五个等级
debug < info < warn < error < fatal
虽然可以自己添加等级,但是我觉得没有必要,五个够用了吧!你要写入信息的时候就把信息归为五个等级中的一个,然后调用相应的函数即可。
分五个等级到底有什么用呢?日志信息到底写到哪里去了?
“LogFactory.getLog(Test.class)”又是什么意思捏?接着往下看吧!
Log4j的关键之处在于它的继承思想。也就是一个Log可以继承另外一个Log的属性(输出到哪里,日志等级,日志格式等等)。怎么继承?
Log4j是根据Log的名字来判断继承关系的,比如:
名字为“com.zhlmmc.lib”的Log就是“com.zhlmmc.lib.log”的parent,明白了吧!Log4j还有一个rootLogger,相当于Java的Object。
回过头来看“LogFactory.getLog(Test.class)”这里的“Test.class”事实上传进去的是Test这个类的完整路径(包名+类名),“test.Test”。这样如果存在“test”这个Log那么Test这个Log就继承它,否则就继承rootLogger。
那具体的Log属性是在哪里定义的呢?
<[if !supportLists]>二、<[endif]>常见的配置文件
虽然可以用xml或者在运行时用Java来配置Log4j,但还是properties文件好用啊!
log4j.rootLogger=info, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
分析一下:
第一行,配置log4j.rootLogger你明白吧。应为它是根,总得配置一下,否则别的Log继承什么啊。其他的Log可以配置也可以不配置。等号后面的第一个参数表示日志级别,可以填五个级别中的一种,后面的参数都是让Log知道输出到哪里,如果你想让日志输出到两个地方就加两个输出参数,比如:
log4j.rootLogger=info, stdout, file
这里的info表示,该Log的日志级别为info,所有级别小于info的日志都不会被记录。比如使用这个配置文件的话,我刚开始举的那个类中
log.debug("Debug info.");
这句话是不起作用的,因为debug的级别小于info。这样就很容易控制什么信息在调试的时候要显示,什么信息在发布的时候要去掉。这些都不用改代码,很方便吧。
但,stdout和file又是什么呢?
接着往下看,就是配置stdout了,这个名字是随便取的,你可以叫它A:
log4j.appender.A=org.apache.log4j.ConsoleAppender
那么上面的rootLogger的参数stdout也要改成A,其他用到的地方当然也要改。这里的关键不是名字,而是appender类型,比如这里的“ConsoleAppender”,看明白了吧,输出到Console。后面两行都是设置日志格式的,一般情况下你就照抄吧。既然是最简入门关注于理解Log4j的工作原理,我就不介绍file类型的appender了,一搜一大把。
在实际的项目开发中,很可能遇到所引用的包用Log4j来记录日志,比如Hibernate。那么在这里你可以很容易的控制这个包如何记录日志。比如在上面的配置文件中加一行:
log4j.logger.org.hibernate=fatal
那么所有org.hibernate包下面的类就只会显示很少的信息,因为fatal的级别最高啊。
<[if !supportLists]>三、<[endif]>部署
别怕,这可不是部署Tomcat。把log4j的包和commons-logging的包(加在一起才两个)放到classpath下面。然后把配置文件保存为log4j.properties,也放在classpath下面(如果用Eclipse的话,放在src目录下即可)。然后你就可以跑了。
发表评论
-
传递中文参数
2012-07-27 11:12 925传递: URLEncoder.encode(&q ... -
java的cp命令
2010-07-27 11:21 5459-cp 参数后面是类路径,是指定给解释器到哪里找到你的.cla ... -
java.util.ConcurrentModificationException 解决办法
2010-07-12 15:01 978今天在项目的中有一个需求,需要在一个Set类型的集合中删除满足 ... -
java多线程之 wait(),notify(),notifyAll()
2009-11-10 20:53 1339wait(),notify(),notifyAll()不属于T ... -
什么是XFire
2009-10-08 14:16 1217XFire 是 codeHaus 组织提供的一个开源框架,它构 ... -
jbpm是什么
2009-10-08 14:15 2099jBPM是一种基于J2EE的轻量级工作流管理系统,是JBoss ... -
java.util.Date和java.sql.Date的区别及应用
2009-09-30 20:08 1932java.util.Date 就是在除了SQL语句的情况下面 ... -
JAVA排序汇总
2009-09-14 22:16 860package com.softeem.jbs.lesson4 ... -
java随机数
2009-07-12 19:04 4615java.util.Random类来产生一 ... -
使用sunjce加密解密问题解决
2009-07-01 11:16 3281最近在做开发的时候遇到要对用户输入进行加密,上网搜索了一下ja ... -
加密处理问题
2009-07-01 10:50 820/** * VDSP自己的一个摘要算法 * @para ... -
Logger.getLogger和 LogFactory.getLog
2009-07-01 08:56 2573Logger来自log4j自己的包 ... -
关于权限设计
2009-06-15 17:12 1424权限设计通常包括数据 ... -
java读取配置文件的几种方法
2009-06-10 10:15 792在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选 ... -
对数据表中大字段的处理方式
2009-06-09 09:43 1073在数据库中,经常需要用到大字段类型,如oracle中long/ ... -
java错误
2009-06-02 21:47 1080错误警告: 2008-9-27 10:55:26 org.a ... -
判断一个字符是否是汉字
2009-05-10 15:03 1743String str = "中国chin受到腐蚀的 ... -
标准规范--方法注释
2009-03-04 14:24 1479/** * Created by IntelliJ IDEA. ... -
IDE下载地址
2009-03-03 23:13 1197Netbeans6.0beta2下载地址:http://dlc ... -
jdk配置的错误
2009-02-02 10:09 1049今天在配置jdk的时候, CLASSPATH的值末尾出现少了逗 ...
相关推荐
Log4j 最简入门 log4j是常用的log工具。非常好用
包含一个log4j的ppt 一个log4j的文档 一个简单的java的log4j工程,含有所需要的jar包
自己写的log4j的入门程序,对log4j中几种级别的日志输出进行了测试,程序简单易懂
log4j使用文档,这篇文档属于入门级的,适合初学者和想要查询简单语句的人观看
log4j的用户指南,适合新手阅读学习。英文版本,但是都是比较简单的英语。log4j本身也比较简单,因此很适合作为英文文档的入门读物。
该实例是一个关于log4j的实例,简单易懂,是log4j入门的绝佳资料
用于日志到控制台或者文件中的log4j使用案例,工程中含有log4j的jar包,log4j使用简介,log4j的配置文件,还有一个入门的案例,简单使用,即学即会,适合入门者。
上述demo按照快速开发文档编写,并且修改了读取配置文件的方式,新增log4j和zookeeper
2.需要JDK5,cxf 2.3.4 log4j 使用步骤: project->properties->build path->library 增加cxf2.3.4 lib目录下所有libraries 及log4j的jar。 project: 1.根据用户传入的cityid,可以得知这个city 的天气情况。 2....
简单介绍了SLF4J的功能,结构,并介绍了其常用的log实现框架log4j的appender结构,是slf4j新手非常不错的入门手册,这可以我自已编写的.欢迎大家指正.
4、项目实战篇: Extjs3.2+ASP.NET七层架构+设计模式+ log4j+WebSerice等技术国讯教育通用智能OA办公平台 适用对象 1、要求有一定的javascript语言和HTML,CSS基础的学员 2、有一定的Asp.net网页编程基础和C#语言...
MyBatis入门之增删改查: ①实现模拟业务连接数据库的增删改查 ②log4j日志配置 ③MyBatis所需jar包
这是继ice入门例子的第二个例子,主要讲述Ice.Application与配置文件的简单使用 所需jar在lib中 这个例子中集成了日志插件...日志产生的文件在log4j.properties配置中定死为D:/icelogs/文件夹中,你自己可以随意更改
供初学者使用,struts1和mysql数据库,简单的登录跳转,包括了log4j和访问properties文件,
02.入门案例-构建工程、log4j.properties 03.入门案例-代码运行yarn模式运行 04.DataSource-基于集合 05.DataSource-基于文件 06.Transformation开发 07.Datasink-基于集合 08.Datasink-基于文件 09.执行模式-本地...
hibernate入门小示例,平台环境 myeclipse + oracle, 使用junit对hibernate的简单增删改查进行验证,并实现日志记录。
一个基于@AspectJ的spring2.0 AOP应用实例,很小很简单,没有任何额外信息,最适合AOP入门学习。使用log4j打印信息。把项目直接import进myeclipse就可以使用啦......
四、Toad使用快速入门 1. Schema Browser: Schema browser是Toad的极为有特色的模块。在schema browser的帮助下,可以方便的浏览数据库内部的各类数据库对象,比如表,索引,序列,存储过程等,而且可以方便的倒出...
chapter4-2-3:对log4j进行多环境不同日志级别的控制 chapter4-2-4:使用AOP统一处理Web请求日志 chapter4-2-5:使用log4j记录日志到MongoDB chapter4-2-6:Spring Boot 1.5.x新特性:动态修改日志级别] 安全管理 ...
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...