source: trunk/autoquest-runner/src/main/java/de/ugoe/cs/autoquest/log4j/Log4JLogger.java @ 922

Last change on this file since 922 was 922, checked in by sherbold, 12 years ago
  • renaming of packages from de.ugoe.cs.quest to de.ugoe.cs.autoquest
  • Property svn:mime-type set to text/plain
File size: 3.6 KB
Line 
1
2package de.ugoe.cs.autoquest.log4j;
3
4import java.util.logging.Level;
5
6import org.apache.log4j.Logger;
7import org.apache.log4j.PropertyConfigurator;
8
9import de.ugoe.cs.util.console.Console;
10import de.ugoe.cs.util.console.listener.ICommandListener;
11import de.ugoe.cs.util.console.listener.IErrorListener;
12import de.ugoe.cs.util.console.listener.IExceptionListener;
13import de.ugoe.cs.util.console.listener.ITraceListener;
14
15/**
16 * <p>
17 * Implements logging based on the log4j API.
18 * </p>
19 *
20 * @author Steffen Herbold
21 * @version 1.0
22 */
23public class Log4JLogger implements IErrorListener, ITraceListener, IExceptionListener,
24    ICommandListener
25{
26
27    /**
28     * <p>
29     * Reference to the logger.
30     * </p>
31     */
32    Logger logger;
33
34    /**
35     * <p>
36     * This is the trace level according to the Java logger API. We use this instead of the log4j
37     * levels themselves for the logging.
38     * </p>
39     */
40    Level traceLevel;
41
42    /**
43     * <p>
44     * Constructor. Creates a new Log4JLogger and registers the implemented listener with the
45     * {@link Console}.
46     * </p>
47     * @param traceLevel tracing level
48     */
49    public Log4JLogger(Level traceLevel) {
50        PropertyConfigurator.configure("data/log4j.properties");
51        logger = Logger.getLogger("de.ugoe.cs.autoquest");
52        logger.setLevel(convertToLog4JLevel(traceLevel));
53        this.traceLevel = traceLevel;
54        Console.getInstance().registerErrorListener(this);
55        Console.getInstance().registerTraceListener(this);
56        Console.getInstance().registerExceptionListener(this);
57        Console.getInstance().registerCommandListener(this);
58    }
59
60    /*
61     * (non-Javadoc)
62     *
63     * @see de.ugoe.cs.util.console.listener.ICommandListener#commandNotification (java.lang.String)
64     */
65    @Override
66    public void commandNotification(String command) {
67        logger.info("Command executed: " + command);
68    }
69
70    /*
71     * (non-Javadoc)
72     *
73     * @see de.ugoe.cs.util.console.listener.IExceptionListener#printStacktrace(java
74     * .lang.Exception)
75     */
76    @Override
77    public void logException(Exception e) {
78        logger.error("", e);
79    }
80
81    /*
82     * (non-Javadoc)
83     *
84     * @see de.ugoe.cs.util.console.listener.ITraceListener#traceMsg(java.lang.String )
85     */
86    @Override
87    public void traceMsg(String traceMessage, Level level) {
88        if( level.intValue()>=traceLevel.intValue()) {
89            logger.log(convertToLog4JLevel(level), traceMessage);
90        }
91    }
92
93    /*
94     * (non-Javadoc)
95     *
96     * @see de.ugoe.cs.util.console.listener.IErrorListener#errorMsg(java.lang.String )
97     */
98    @Override
99    public void errorMsg(String errMessage) {
100        logger.error(errMessage);
101    }
102
103    /**
104     * <p>
105     * Converts the log level described by {@link Level} into a {@link org.apache.log4j.Level}.
106     * </p>
107     *
108     * @param level
109     *            java.util.logger.Level severity
110     * @return org.apache.log4j.Level severity
111     */
112    private org.apache.log4j.Level convertToLog4JLevel(Level level) {
113        if (level == Level.OFF) {
114            return org.apache.log4j.Level.OFF;
115        }
116        if (level == Level.SEVERE) {
117            return org.apache.log4j.Level.FATAL;
118        }
119        if (level == Level.WARNING) {
120            return org.apache.log4j.Level.WARN;
121        }
122        if (level == Level.INFO || level == Level.CONFIG) {
123            return org.apache.log4j.Level.INFO;
124        }
125        // remaining levels: FINE, FINER, FINEST, ALL
126        return org.apache.log4j.Level.ALL;
127    }
128}
Note: See TracBrowser for help on using the repository browser.