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 021package org.granite.logging; 022 023import org.apache.log4j.Level; 024import org.apache.log4j.LogManager; 025 026/** 027 * @author Franck WOLFF 028 */ 029public 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}