log4j:WARN No appenders could be found for logger (org.springframework.core.CollectionFactory). WARN Please initialize the log4j

环境:struts2.18 hibernate3.2 spring2.5

打开src目录下的log4j.properties加上:

log4j.rootLogger=warn, stdout

警告信息就不会再出现了

 

以下是转载:

log4j的出现使得代码的维护有了很大改观,开发 的进度有了很大提高;为什么这么说呢?是否会为程序中很多的System.out.println("rrrrrrr")而困惑呢!开发的时候为了调试,输入到控制台是一 个好的办法,但如何如果程序已经趋与 稳定的时候,那么对于这些无关痛痒的输出语句你的做法只有三  个 ,一 放在一边,完全不理睬,很显然这个作法是不推荐的,程序的运行效率也相当低;二 是把所有的System.out.println注释  三是把所有的System.out.println删除,毫无疑问无论是注释还是删除都是一个很繁重和没有任何意义的工作;还好有了 log4j,一切的问题都 可以迎韧而解了;只要把log4j的优先级调好就可以了 ;

 

 

log4j 的优先级别从低到高依次是DEBUG-->INFO-->WARN--->ERROR-->FETAL;

 

最高的原则是把优先级别低于配置文件中指定的优先级别屏蔽,也就是通常所说的不做任何处理 ;举个例子如果你的配置文件

 

指定优先级别是WARN,当程序中有代码logger.info(message),则对message不会进行处理(输出到控制台或者文件)因为info优先级别低于 warn,而如果程序有代码logger.error(message)或者logger.warn(message)则会进行处理,因为error优先级别高于 warn

 

说 一 下log4j在程序中的使用

1  把所用的log4j的jar包导入工程(log4j-1.2.14.jar,视版本不同而不同)

 

2 把配置文件log4j.properties放到classpath下,Eclipse中通常为src目录下,内容大致如下

# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.

#log4j.rootLogger=DEBUG, stdout, logfile
#log4j.rootLogger=INFO, stdout, logfile
log4j.rootLogger=WARN, stdout, logfile
#log4j.rootLogger=ERROR, stdout, logfile
#log4j.rootLogger=FETAL, stdout, logfile

#指定stout输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
##指定stout输出格式
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

#指定stout输出到文件
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
#输出文件的位置
log4j.appender.logfile.File=d:/log.txt
#输出文件的大小,超过该大小则新建立一个文件
log4j.appender.logfile.MaxFileSize=1KB
# Keep three backup files.
#文件的数目,超过该数字则前面的文件将丢弃
log4j.appender.logfile.MaxBackupIndex=4
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n


#log4j.category.org.apache.commons.dbcp=debug
log4j.category.com.ibatis=DEBUG
#log4j.category.org.springframework=debug

 

3 在程序中代码如下:

public void log(String message){
        logger=Logger.getLogger(test.TestLog.class);
        //logger.info(message);
    logger.warn(message);
        //logger.error(message);
        logger.fatal(message);
        System.out.println("rrr");
    }

 

详细请看附件

log4j的部分配置如下:(http://loveexception.javaeye.com/blog/29366)

# %c 输出日志信息所属的类的全名
# %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-# 18- 22:10:28
# %f 输出日志信息所属的类的类名
# %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
# %m 输出代码中指定的信息,如log(message)中的message
# %n 输出一个回车换行符,Windows平台为“ ”,Unix平台为“ ”
# %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
# %r 输出自应用启动到输出该日志信息所耗费的毫秒数
# %t 输出产生该日志事件的线程名

你可能感兴趣的:(log4j,jboss,hibernate,struts,eclipse,spring)