001    /*
002      GRANITE DATA SERVICES
003      Copyright (C) 2011 GRANITE DATA SERVICES S.A.S.
004    
005      This file is part of Granite Data Services.
006    
007      Granite Data Services is free software; you can redistribute it and/or modify
008      it under the terms of the GNU Library General Public License as published by
009      the Free Software Foundation; either version 2 of the License, or (at your
010      option) any later version.
011    
012      Granite Data Services is distributed in the hope that it will be useful, but
013      WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
014      FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
015      for more details.
016    
017      You should have received a copy of the GNU Library General Public License
018      along with this library; if not, see <http://www.gnu.org/licenses/>.
019    */
020    
021    package org.granite.logging;
022    
023    import org.apache.log4j.Level;
024    import org.apache.log4j.LogManager;
025    
026    /**
027     * @author Franck WOLFF
028     */
029    public class Log4jLogger extends Logger {
030            
031        ///////////////////////////////////////////////////////////////////////////
032        // Fields.
033    
034            private static final String FQCN = Log4jLogger.class.getName();
035            
036        ///////////////////////////////////////////////////////////////////////////
037        // Constructor.
038    
039        public Log4jLogger(String name, LoggingFormatter formatter) {
040            super(LogManager.getLogger(name), formatter);
041        }
042    
043        ///////////////////////////////////////////////////////////////////////////
044        // Utility getter.
045    
046        @Override
047            protected org.apache.log4j.Logger getLoggerImpl() {
048            return (org.apache.log4j.Logger)super.getLoggerImpl();
049        }
050        
051        ///////////////////////////////////////////////////////////////////////////
052        // Logging methods.
053    
054        @Override
055            public void info(String message, Object... args) {
056            if (isInfoEnabled())
057                getLoggerImpl().log(FQCN, Level.INFO, getFormatter().format(message, args), null);
058        }
059    
060        @Override
061        public void info(Throwable t, String message, Object... args) {
062            if (isInfoEnabled())
063                getLoggerImpl().log(FQCN, Level.INFO, getFormatter().format(message, args), t);
064        }
065    
066        @Override
067        public void trace(String message, Object... args) {
068            if (isTraceEnabled())
069                getLoggerImpl().log(FQCN, Level.TRACE, getFormatter().format(message, args), null);
070        }
071    
072        @Override
073        public void trace(Throwable t, String message, Object... args) {
074            if (isTraceEnabled())
075                getLoggerImpl().log(FQCN, Level.TRACE, getFormatter().format(message, args), t);
076        }
077    
078        @Override
079        public void warn(String message, Object... args) {
080            if (isWarnEnabled())
081                getLoggerImpl().log(FQCN, Level.WARN, getFormatter().format(message, args), null);
082        }
083    
084        @Override
085        public void warn(Throwable t, String message, Object... args) {
086            if (isWarnEnabled())
087                getLoggerImpl().log(FQCN, Level.WARN, getFormatter().format(message, args), t);
088        }
089    
090        @Override
091        public void debug(String message, Object... args) {
092            if (isDebugEnabled())
093                getLoggerImpl().log(FQCN, Level.DEBUG, getFormatter().format(message, args), null);
094        }
095    
096        @Override
097        public void debug(Throwable t, String message, Object... args) {
098            if (isDebugEnabled())
099                getLoggerImpl().log(FQCN, Level.DEBUG, getFormatter().format(message, args), t);
100        }
101    
102        @Override
103        public void error(String message, Object... args) {
104            if (isErrorEnabled())
105                getLoggerImpl().log(FQCN, Level.ERROR, getFormatter().format(message, args), null);
106        }
107    
108        @Override
109        public void error(Throwable t, String message, Object... args) {
110            if (isErrorEnabled())
111                getLoggerImpl().log(FQCN, Level.ERROR, getFormatter().format(message, args), t);
112        }
113    
114        @Override
115        public void fatal(String message, Object... args) {
116            if (isFatalEnabled())
117                getLoggerImpl().log(FQCN, Level.FATAL, getFormatter().format(message, args), null);
118        }
119    
120        @Override
121        public void fatal(Throwable t, String message, Object... args) {
122            if (isFatalEnabled())
123                getLoggerImpl().log(FQCN, Level.FATAL, getFormatter().format(message, args), t);
124        }
125    
126        ///////////////////////////////////////////////////////////////////////////
127        // Configuration.
128    
129        @Override
130        public void setLevel(org.granite.logging.Level level) {
131            Level log4jLevel = null;
132            switch (level) {
133                    case FATAL: log4jLevel = Level.FATAL; break;
134                    case ERROR: log4jLevel = Level.ERROR; break;
135                    case INFO: log4jLevel = Level.INFO; break;
136                    case TRACE: log4jLevel = Level.TRACE; break;
137                    case DEBUG: log4jLevel = Level.DEBUG; break;
138                    case WARN: log4jLevel = Level.WARN; break;
139                    default: throw new IllegalArgumentException("Unknown logging level: " + level);
140            }
141            getLoggerImpl().setLevel(log4jLevel);
142        }
143    
144        @Override
145        public boolean isDebugEnabled() {
146            return getLoggerImpl().isEnabledFor(Level.DEBUG);
147        }
148    
149        @Override
150        public boolean isErrorEnabled() {
151            return getLoggerImpl().isEnabledFor(Level.ERROR);
152        }
153    
154        @Override
155        public boolean isFatalEnabled() {
156            return getLoggerImpl().isEnabledFor(Level.FATAL);
157        }
158    
159        @Override
160        public boolean isInfoEnabled() {
161            return getLoggerImpl().isEnabledFor(Level.INFO);
162        }
163    
164        @Override
165        public boolean isTraceEnabled() {
166            return getLoggerImpl().isEnabledFor(Level.TRACE);
167        }
168    
169        @Override
170        public boolean isWarnEnabled() {
171            return getLoggerImpl().isEnabledFor(Level.WARN);
172        }
173    }