问题描述:
使用Spring集成了Quartz实现定时任务,Tomcat使用startup运行,或者使用服务方式运行停止时,log4j的输出以下警告日志:
log4j:WARN No appenders could be found for logger (org.quartz.simpl.SimpleThreadPool). log4j:WARN Please initialize the log4j system properly. |
虽然对程序运行没有影响,但是总感觉有问题。
解决办法:
在web项目初始化时的类中执行一下PropertyConfigurator.configure(props);
其中props为系统读取.properties文件的实现类.
实现代码如下:
/** * 读取配置文件 * * @author CharlieChen * @DateTime 2014-04-16上午9:12:44 * @version 1.0 */ public class ReadProperties extends PropertyPlaceholderConfigurer {
private static Map<String, Object> ctxPropertiesMap;
public static Map<String, String> monitPaths;
@Override protected void processProperties( ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {
//读取配置文件配置,没有下面一句,log4j日志出现警告 PropertyConfigurator.configure(props);
super.processProperties(beanFactoryToProcess, props); String prefix = "FFP.monitorPath"; ctxPropertiesMap =new HashMap<String, Object>(); monitPaths = new HashMap<String,String>(); for (Object key : props.keySet()) { String keyStr = key.toString(); String value = props.getProperty(keyStr); ctxPropertiesMap.put(keyStr, value); if(keyStr.startsWith(prefix)){ monitPaths.put(keyStr, value); } } if(monitPaths.size() == 0){ System.out.println("系统配置监控路径未正确配置!"); } }
public static Object getContextProperty(String name) { return ctxPropertiesMap.get(name); } } |
在spring-servlet.xml的配置如下:
<beanid="baseDirConfig"class="com.abc.charlie.mvc.utils.ReadProperties"> <propertyname="locations"> <list> <value>/WEB-INF/config/configDir.properties</value> <value>/WEB-INF/config/jdbc-config.properties</value> <value>/WEB-INF/config/email-config.properties</value> </list> </property> <propertyname="fileEncoding"value="utf-8"/> <propertyname="ignoreResourceNotFound"value="true"/> </bean> |