1 |
// Jericho HTML Parser - Java based library for analysing and manipulating HTML
|
2 |
// Version 3.2
|
3 |
// Copyright (C) 2004-2009 Martin Jericho
|
4 |
// http://jericho.htmlparser.net/
|
5 |
//
|
6 |
// This library is free software; you can redistribute it and/or
|
7 |
// modify it under the terms of either one of the following licences:
|
8 |
//
|
9 |
// 1. The Eclipse Public License (EPL) version 1.0,
|
10 |
// included in this distribution in the file licence-epl-1.0.html
|
11 |
// or available at http://www.eclipse.org/legal/epl-v10.html
|
12 |
//
|
13 |
// 2. The GNU Lesser General Public License (LGPL) version 2.1 or later,
|
14 |
// included in this distribution in the file licence-lgpl-2.1.txt
|
15 |
// or available at http://www.gnu.org/licenses/lgpl.txt
|
16 |
//
|
17 |
// This library is distributed on an "AS IS" basis,
|
18 |
// WITHOUT WARRANTY OF ANY KIND, either express or implied.
|
19 |
// See the individual licence texts for more details.
|
20 |
|
21 |
package net.htmlparser.jericho;
|
22 |
|
23 |
final class LoggerFactory
|
24 |
{
|
25 |
private static LoggerProvider defaultLoggerProvider = null;
|
26 |
|
27 |
public static Logger getLogger(final String name)
|
28 |
{
|
29 |
return getLoggerProvider().getLogger(name);
|
30 |
}
|
31 |
|
32 |
public static Logger getLogger(final Class loggedClass)
|
33 |
{
|
34 |
return getLogger(loggedClass.getName());
|
35 |
}
|
36 |
|
37 |
public static LoggerProvider getLoggerProvider()
|
38 |
{
|
39 |
return (Config.LoggerProvider != null) ? Config.LoggerProvider : getDefaultLoggerProvider();
|
40 |
}
|
41 |
|
42 |
private static LoggerProvider getDefaultLoggerProvider()
|
43 |
{
|
44 |
if (defaultLoggerProvider == null) defaultLoggerProvider = determineDefaultLoggerProvider();
|
45 |
return defaultLoggerProvider;
|
46 |
}
|
47 |
|
48 |
private static LoggerProvider determineDefaultLoggerProvider()
|
49 |
{
|
50 |
if (isClassAvailable("org.slf4j.impl.StaticLoggerBinder"))
|
51 |
{
|
52 |
if (isClassAvailable("org.slf4j.impl.JDK14LoggerFactory")) return LoggerProvider.JAVA;
|
53 |
if (isClassAvailable("org.slf4j.impl.Log4jLoggerFactory")) return LoggerProvider.LOG4J;
|
54 |
if (!isClassAvailable("org.slf4j.impl.JCLLoggerFactory")) return LoggerProvider.SLF4J;
|
55 |
// fall through to next check if SLF4J is configured to use JCL
|
56 |
}
|
57 |
//if (isClassAvailable("org.apache.commons.logging.Log"))
|
58 |
//{
|
59 |
// final String logClassName = org.apache.commons.logging.LogFactory.getLog("test").getClass().getName();
|
60 |
// if (logClassName.equals("org.apache.commons.logging.impl.Jdk14Logger")) return LoggerProvider.JAVA;
|
61 |
// if (logClassName.equals("org.apache.commons.logging.impl.Log4JLogger")) return LoggerProvider.LOG4J;
|
62 |
// return LoggerProvider.JCL;
|
63 |
//}
|
64 |
if (isClassAvailable("org.apache.log4j.Logger")) return LoggerProvider.LOG4J;
|
65 |
return LoggerProvider.JAVA;
|
66 |
}
|
67 |
|
68 |
private static boolean isClassAvailable(final String className)
|
69 |
{
|
70 |
try
|
71 |
{
|
72 |
Class.forName(className);
|
73 |
return true;
|
74 |
}
|
75 |
catch (Throwable t)
|
76 |
{
|
77 |
return false;
|
78 |
}
|
79 |
}
|
80 |
}
|