java开发中的log4j基础

1.每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,
可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。
2.Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,
如 console、files、GUI components、NT Event Loggers等,一个Logger可以拥有多个Appender,
也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。
3.Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。
4.OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL  优先级。

5. %m   输出代码中指定的消息
  %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 )

6.
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

   1.ConsoleAppender选项
      Threshold=WARN:指定日志消息的输出最低层次。
      ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
      Target=System.err:默认情况下是:System.out,指定输出控制台
   2.FileAppender 选项
      Threshold=WARN:指定日志消息的输出最低层次。
      ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
      File=mylog.txt:指定消息输出到mylog.txt文件。
      Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
   3.DailyRollingFileAppender 选项
      Threshold=WARN:指定日志消息的输出最低层次。
      ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
      File=mylog.txt:指定消息输出到mylog.txt文件。
      Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
      DatePattern=''.''yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定
                                          按月、周、天、时和分。即对应的格式如下:
      1)''.''yyyy-MM: 每月
      2)''.''yyyy-ww: 每周 
      3)''.''yyyy-MM-dd: 每天
      4)''.''yyyy-MM-dd-a: 每天两次
      5)''.''yyyy-MM-dd-HH: 每小时
      6)''.''yyyy-MM-dd-HH-mm: 每分钟
4.RollingFileAppender 选项
      Threshold=WARN:指定日志消息的输出最低层次。
      ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
      File=mylog.txt:指定消息输出到mylog.txt文件。
      Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
      MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,
                                           即将原来的内容移到mylog.log.1文件。
      MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
7.ssh2 log4j实例
#配置根Logger
#OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
#Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG
log4j.rootLogger=INFO,stdout,allFile,todayAllFile,todayErrorFile
#控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.target=System.out
log4j.appender.stdout.immediateFlush=true
log4j.appender.stdout.threshold=DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=%d{ABSOLUTE} %-5p [%F:%L] - %m%n
#总文件
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.allFile=org.apache.log4j.RollingFileAppender
log4j.appender.allFile.file=usersystemall.log
log4j.appender.allFile.append=true
log4j.appender.allFile.immediateFlush=true
log4j.appender.allFile.threshold=DEBUG
log4j.appender.allFile.layout=org.apache.log4j.PatternLayout
log4j.appender.allFile.layout.conversionPattern=%d [%t] %-5p %c{2} %x - %m%n
log4j.appender.allFile.maxFileSize=10MB
log4j.appender.allFile.maxBackupIndex=356
#文件FileAppendr格式
log4j.appender.allFileError=org.apache.log4j.FileAppender
log4j.appender.allFileError.file=c\:\\all_error.log
log4j.appender.allFileError.append=true
log4j.appender.allFileError.immediateFlush=true
log4j.appender.allFileError.threshold=WARN
log4j.appender.allFile.layout=org.apache.log4j.PatternLayout
log4j.appender.allFile.layout.conversionPattern=%d [%t] %-5p %c{2} %x - %m%n

#每日文件
log4j.appender.todayAllFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.todayAllFile.file=usersystem_every_all.log
log4j.appender.todayAllFile.append=true
log4j.appender.todayAllFile.immediateFlush=true
log4j.appender.todayAllFile.threshold=DEBUG
log4j.appender.todayAllFile.layout=org.apache.log4j.PatternLayout
log4j.appender.todayAllFile.layout.conversionPattern=%d [%t] %-5p %c{2} %x - %m%n
log4j.appender.todayAllFile.datePattern='.'yyyy-MM-dd'.log'

# OpenSymphony Stuff
log4j.logger.com.opensymphony=INFO
log4j.logger.org.apache.struts2=INFO
# Spring Stuff
log4j.logger.org.springframework=INFO
# Hibernate Stuff
log4j.logger.org.hiberante=INFO
log4j.logger.org.hibernate.tool.hbm2ddl=debug


8.java 程序调用log4j


//当调用log4j 显示log4j
private static Log logger = LogFactory.getLog(CommonsLogTest.class);
/**
* @param args
*/
public static void main(String[] args) {
logger.debug("DEBUG信息");
logger.info("INFO信息");
logger.warn("WARN信息");
logger.error("ERROR信息");
logger.fatal("FATAL信息");
}
//声明程序中类的日志的等级。
log4j.logger.com.bjsxt=warn


9.每个框架使用日志时需要的命令
1.Spring
# Spring Stuff
log4j.logger.org.springframework=INFO
2.hibernate
# Hibernate Stuff
log4j.logger.org.hiberante=INFO
log4j.logger.org.hibernate.tool.hbm2ddl=debug
3.struts2
# OpenSymphony Stuff
log4j.logger.com.opensymphony=INFO
log4j.logger.org.apache.struts2=INFO

4.Ibatis
#log4j.logger.com.ibatis=debug,stdout 
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug,stdout 
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug,stdout 
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug,stdout 
#log4j.logger.java.sql.Connection=error,stdout 
#log4j.logger.java.sql.Statement=debug,stdout 
log4j.logger.java.sql.PreparedStatement=debug

你可能感兴趣的:(java,log4j,框架)