一. 理解log4j
Log4j是用来做系统日志,它可以配置输出到任意流管道.有一个配置文件放在src下面在编译后就到了bin下面了,实际运行的时候读取的配置也是bin下面的log4j.properties。也可以配置为xml文件.
二. 一般的配置文件
#指明日志的级别是INFO级别的,后面的参数都是输出的管道参数名称
#log4j.rootLogger = [Level],管道参数,管道参数...
#Level的所有级别
#OFF>FATAL>ERROR>WARN>INFO>DEBUG>ALL
#一般使用ERROR,INFO,DEBUG
#ERROR一般用于Exception
#INFO一般用于系统级别的提示输出
#DEBUG一般用于开发调试
#当然这些是个人理解
#log4j.rootCategory我还没有明白,再学学就知道了
log4j.rootCategory=INFO, stdout , R
##############说明区域一开始#############
#这里就说明了第一个参数stdout管道的输出配置
#输出道控制台
#log4j.appender.参数 = org.apache.log4j.ConsoleAppender
#输出到文件
#log4j.appender.参数 = org.apache.log4j.FileAppender
#输出到文件,每天产生一个
#log4j.appender.参数 = org.apache.log4j.DailyRollingFileAppender
#输出到文件,达到指定大小就产生新的日志文件
#log4j.appender.参数 = org.apache.log4j.RollingFileAppender
#输出到任意指定的地方,这个我还没有搞清除
#log4j.appender.参数 = org.apache.log4j.WriterAppender
##############说明区域一结束#############
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
##############说明区域二开始#############
#布局形式
#HTML表格形式布局
#log4j.appender.参数.layout = org.apache.log4j.HTMLLayout
#指定布局模式
#log4j.appender.参数.layout = org.apache.log4j.PatternLayout
#包含日志信息的级别和信息字符串
#log4j.appender.参数.layout = org.apache.log4j.SimpleLayout
#包含日志产生的时间、线程、类别等等信息
#log4j.appender.参数.layout = org.apache.log4j.TTCCLayout
##############说明区域二结束#############
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
##############说明区域三开始#############
#布局的具体格式,是对PatternLayout的具体描述
#log4j.appender.stdout.layout.ConversionPattern
#%m 输出代码中指定的消息
#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
#%r 输出自应用启动到输出该log信息耗费的毫秒数
#%c 输出所属的类目,通常就是所在类的全名
#%t 输出产生该日志事件的线程名
#%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格#式,比如:#%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:#10:28,921
#%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
#[QC]是log信息的开头,可以为任意字符,一般为项目简称。输出的信息
#[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached #instance of singleton bean 'MyAutoProxy'
##############说明区域三结束#############
#输出的具体格式
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
#第二个输出管道是指明为文件,这里做了配置,产生日志的形式为每天一个文件
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#文件路径及名称
log4j.appender.R.File=D:/log/log.html
#文件输出的布局
log4j.appender.R.layout=org.apache.log4j.HTMLLayout
#输出的具体格式
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
#以下为其他日志的级别
#主要是为了解决所有应用使用同一个配置文件的问题
#可以理解为log4j是jdk的一个插件,使用了log的java文件就得按照它的规则来产生日志.
#log4j控制日志的输出并不是每一个类单独控制而是根据各个类package的名称来控制的.
#比如如下这句,就是说明了所有的com.zsp开头的类的log级别为ERROR
log4j.logger.com.zsp=ERROR
#比如如下这句,就是说明所有以org.hibernate开头的类的log级别为DEBUG,而不是hibernate的日志为DEBUG,比如你写了一个类叫org.hibernate.ttt.java使用了log,也会受到控制
log4j.logger.org.hibernate=DEBUG
三. 使用哪些包呢
1. commons-logging.jar
2. log4j.jar
四. 程序中怎么使用啊
package com.zsp.oa.demo.log4j;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Log4jDemo {
private final Log log = LogFactory.getLog(this.getClass());
public void sum(Object a,Object b){
try {
Integer ai = new Integer(a.toString());
Integer bi = new Integer(b.toString());
if(log.isDebugEnabled()){
log.debug("操作成功并完成!");
}
} catch (Exception e) {
if(log.isErrorEnabled()){
log.error(e);
}
}
}
public void dev(int a,int b){
log.info("hahahahah");
try {
int c = a/b;
} catch (Exception e) {
log.error(e);
}
}
public static void main(String[] args) {
Log4jDemo test = new Log4jDemo();
test.dev(10, 0);
}
}