01: /*
02: * This file is part of PFIXCORE.
03: *
04: * PFIXCORE is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU Lesser General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * PFIXCORE is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public License
15: * along with PFIXCORE; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: */
18:
19: package de.schlund.pfixxml.util.logging;
20:
21: import java.lang.reflect.Constructor;
22:
23: import org.apache.commons.logging.LogConfigurationException;
24: import org.apache.commons.logging.impl.Log4JLogger;
25: import org.apache.commons.logging.impl.LogFactoryImpl;
26:
27: /**
28: * Commons-Logging LogFactory returning the {@link de.schlund.pfixxml.util.logging.ProxyLogObject}
29: * logger or {@link org.apache.commons.logging.impl.Log4JLogger}.
30: *
31: * @author Sebastian Marsching <sebastian.marsching@1und1.de>
32: */
33: public class ProxyLogFactory extends LogFactoryImpl {
34:
35: @SuppressWarnings("unchecked")
36: protected Constructor getLogConstructor()
37: throws LogConfigurationException {
38: try {
39: if (ProxyLogUtil.getInstance().isConfiguredForCl()) {
40: // Commons-logging is available in the container
41: // so we want to use it
42: return ProxyLogObject.class
43: .getConstructor(new Class[] { String.class });
44: } else {
45: // Commons-logging is not available, so use log4j
46: // ignoring how it is configured
47: return Log4JLogger.class
48: .getConstructor(new Class[] { String.class });
49: }
50: } catch (SecurityException e) {
51: throw new RuntimeException(e);
52: } catch (NoSuchMethodException e) {
53: throw new RuntimeException(e);
54: }
55: }
56:
57: }
|