log4j中输入信息的级别有debug,info,warn,error,fatal 5个级别
他们对应的是输出信息的级别,级别越低信息输入越详细.
使用debug级别的时候,info中的信息也能输出
使用info的时候,debug对应的信息显示不出来
一般在开发的时候使用debug, 开发完成后使用error
灵活的运用各种模式有时候非常方便。比如说在开发过程中,你自己的习惯可能会打印出一些对调试有意义,但系统实际运行不需要的信息,这些都应该放在debug里,当系统真正发布的时候,把log4j等级设置为info就可以避免打印这些东西。而当系统出现问题的时候,你只需要修改log4j.properties里的打印等级就可以看到那些调试信息了。
Log4j.properties示例:
View Code
1 #Log4j配置# 2 #第一步:加入log4j-1.2.8.jar到lib下。# 3 #第二步:在CLASSPATH下建立log4j.properties。内容如下# 4 #在web.xml有几个条目和log4j有关,它们是:# 5 #1<context-param># 6 # <param-name>webAppRootKey</param-name># 7 # <param-value>petclinic.root</param-value># 8 #</context-param># 9 #2.<context-param># 10 #<param-name>log4jConfigLocation</param-name># 11 #<param-value>/WEB-INFclasseslog4j.properties</param-value># 12 #</context-param># 13 14 15 log4j.rootCategory=INFO, stdout , R 16 #此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。# 17 #等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,# 18 #如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示,具体讲解可参照第三部分定义配置文件中的logger。# 19 20 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 21 #此句为定义名为stdout的输出端是哪种类型,可以是# 22 #org.apache.log4j.ConsoleAppender(控制台), # 23 #org.apache.log4j.FileAppender(文件),# 24 #org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),# 25 #org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)# 26 #org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)# 27 28 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 29 #此句为定义名为stdout的输出端的layout是哪种类型,可以是# 30 #org.apache.log4j.HTMLLayout(以HTML表格形式布局), # 31 #org.apache.log4j.PatternLayout(可以灵活地指定布局模式),# 32 #org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), # 33 #org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)# 34 35 log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n 36 #如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:# 37 #%m 输出代码中指定的消息# 38 #%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL # 39 #%r 输出自应用启动到输出该log信息耗费的毫秒数 # 40 #%c 输出所属的类目,通常就是所在类的全名 # 41 #%t 输出产生该日志事件的线程名 # 42 #%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” # 43 #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 # 44 #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。# 45 #[QC]是log信息的开头,可以为任意字符,一般为项目简称。# 46 #输出的信息(例):[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'# 47 48 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 49 log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log 50 log4j.appender.R.layout=org.apache.log4j.PatternLayout 51 1log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n 52 53 log4j.logger.com.neusoft=DEBUG 54 #指定com.neusoft包下的所有类的等级为DEBUG。可以把com.neusoft改为自己项目所用的包名。# 55 log4j.logger.com.opensymphony.oscache=ERROR 56 log4j.logger.net.sf.navigator=ERROR 57 #这两句是把这两个包下出现的错误的等级设为ERROR,如果项目中没有配置EHCache,则不需要这两句。# 58 log4j.logger.org.apache.commons=ERROR 59 log4j.logger.org.apache.struts=WARN 60 #这两句是struts的包。# 61 log4j.logger.org.displaytag=ERROR 62 #这句是displaytag的包。(QC问题列表页面所用)# 63 log4j.logger.org.springframework=DEBUG 64 #此句为Spring的包。# 65 log4j.logger.com.ibatis.db=WARN 66 log4j.logger.org.apache.velocity=FATAL 67 68 log4j.logger.com.canoo.webtest=WARN 69 70 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN 71 log4j.logger.org.hibernate=DEBUG 72 #此两句是hibernate的包。# 73 log4j.logger.org.logicalcobwebs=WARN 74 75 log4j.rootCategory=INFO, stdout , R 76 77 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 78 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 79 log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n 80 81 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 82 log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log 83 log4j.appender.R.layout=org.apache.log4j.PatternLayout 84 1log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n 85 86 log4j.logger.com.neusoft=DEBUG 87 log4j.logger.com.opensymphony.oscache=ERROR 88 log4j.logger.net.sf.navigator=ERROR 89 log4j.logger.org.apache.commons=ERROR 90 log4j.logger.org.apache.struts=WARN 91 log4j.logger.org.displaytag=ERROR 92 log4j.logger.org.springframework=DEBUG 93 log4j.logger.com.ibatis.db=WARN 94 log4j.logger.org.apache.velocity=FATAL 95 96 log4j.logger.com.canoo.webtest=WARN 97 98 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN 99 log4j.logger.org.hibernate=DEBUG 100 log4j.logger.org.logicalcobwebs=WARN
二、Proxool连接池配置说明:
house-keeping-sleep-time: house keeper 保留线程处于睡眠状态的最长时间,house keeper 的职责就是检查各个连接的状态,并判断是否需要销毁或者创建,这个的默认值是30秒。
house-keeping-test-sql: 如果发现了空闲的数据库连接.house keeper 将会用这个语句来测试.这个语句最好非常快的被执行.如果没有定义,测试过程将会被忽略。
maximum-active-time: 如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.所以确认一下你的服务器的带宽.然后定一个合适的值.默认是5分钟。经常有些人或许会遇到正在执行的程序忽然拒绝连接,莫明其妙的程序假死,这些都与这个参数的设置有关,我们大部分数据库操作都会在5分钟之内完成,可是偏偏有些可能5分钟还完成不了,而这个值如果按照默认值的话,连接池就会不管你到底有没有执行完,都会强行关闭数据库连接。
maximum-connection-count: 最大的数据库连接数.一般的大应用设置30就足够了。
maximum-connection-lifetime: 一个线程的最大寿命.
minimum-connection-count: 最小的数据库连接数,一般最好事先初始化一部分连接这样,对于初次连接数据库的应用效率比较高,推荐设置5-10
prototype-count: 连接池中可用的连接数量.如果当前的连接池中的连接少于这个数值.新的连接将被建立(假设没有超过最大可用数).例如.我们有3个活动连接2个可用连接,而我们的prototype-count是4,那么数据库连接池将试图建立另外2个连接.这和 minimum-connection-count不同. minimum-connection-count把活动的连接也计算在内.prototype-count 是spare connections 的数量.
trace: 如果为true,那么每个被执行的SQL语句将会在执行期被log记录(DEBUG LEVEL)。
simultaneous-build-throttle: 是我们可一次建立的最大连接数。那就是新增的连接请求,但还没有可供使用的连接。由于连接可以使用多线程, 在有限的时间之间建立联系从而带来可用连接,但是我们需要通过一些方式确认一些线程并不是立即响应连接请求的,默认是10
配置示例:
View Code
1 #proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒)# 2 house-keeping-sleep-time=60000 3 maximum-new-connections=5 4 prototype-count=5 5 #一次产生的链接数量,最少保持的空闲连接数# 6 # 如果现在prototype-count设置为4个,但是现在已经有2个可以获得的连接,那么将会试图再创建2个连接。但不能超过最大连接数。# 7 maximum-connection-count=20 8 #最大连接数,如果超过最大连接数量则会抛出异常。连接数设置过多,服务器CPU和内存性能消耗很大。 # 9 minimum-connection-count=5 10 #最小连接数# 11 house-keeping-test-sql=select CURRENT_DATE 12 simultaneous-build-throttle=10 13 #同时最大连接数# 14 #maximum-active-time # 15 #连接最大时间活动 默认5分钟。如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.所以确认一下你的服务器的带宽.然后定一个合适的值.默认是5分钟。经常有些人或许会遇到正在执行的程序忽然拒绝连接,莫明其妙的程序假死,这些都与这个参数的设置有关,我们大部分数据库操作都会在5分钟之内完成,可是偏偏有些可能5分钟还完成不了,而这个值如果按照默认值的话,连接池就会不管你到底有没有执行完,都会强行关闭数据库连接。# 16 #maximum-connection-lifetime # 17 #连接最大生命时间 默认4小时#