/* LogConfigurer.java

	Purpose:
		
	Description:
		
	History:
		Fri Dec 16 23:14:07 TST 2011, Created by tomyeh

Copyright (C) 2011 Potix Corporation. All Rights Reserved.

*/
package org.zkoss.zk.ui.http;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.zkoss.lang.Library;
import org.zkoss.mesg.MCommon;
import org.zkoss.mesg.Messages;

/**
 * Utilities for configure the log.
 * @author tomyeh
 * @since 6.0.0
 * @deprecated As of release 7.0.0, use SLF4J API for logging instead.
 */
/*package*/ class LogConfigurer {
	private static final Logger log = LoggerFactory.getLogger(LogConfigurer.class);

	/*package*/ static void configure() {
		final String LIBPROP = "org.zkoss.util.logging.config.file";
		final String path = Library.getProperty(LIBPROP);
		if (path == null || path.length() == 0)
			return;

		InputStream is = LogConfigurer.class.getResourceAsStream(path);
		try {
			if (is == null) {
				File file = new File(path);
				if (!file.isAbsolute())
					file = new File(System.getProperty("user.dir", "."), path);
				if (file.exists())
					try {
						is = new FileInputStream(file);
					} catch (java.io.FileNotFoundException ex) {
						//silent
					}
				if (is == null) {
					log.error(Messages.get(MCommon.FILE_NOT_FOUND, path));
					return;
				}
			}

			log.info(Messages.get(MCommon.FILE_OPENING, path));
			final Properties props = new Properties();
			props.load(is);
			org.zkoss.util.logging.Log.configure(props);
		} catch (Throwable ex) {
			log.error("Failed to load " + path, ex);
		} finally {
			if (is != null)
				try {
					is.close();
				} catch (Throwable ignored) {
				}
		}
	}
}
