001 // $HeadURL: /cvsroot/deegree/src/org/deegree/framework/log/JavaLogger.java,v 1.2 002 // 2004/06/15 14:58:19 tf Exp $ 003 /*---------------- FILE HEADER ------------------------------------------ 004 005 This file is part of deegree. 006 Copyright (C) 2001-2006 by: 007 EXSE, Department of Geography, University of Bonn 008 http://www.giub.uni-bonn.de/deegree/ 009 lat/lon GmbH 010 http://www.lat-lon.de 011 012 This library is free software; you can redistribute it and/or 013 modify it under the terms of the GNU Lesser General Public 014 License as published by the Free Software Foundation; either 015 version 2.1 of the License, or (at your option) any later version. 016 017 This library is distributed in the hope that it will be useful, 018 but WITHOUT ANY WARRANTY; without even the implied warranty of 019 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 020 Lesser General Public License for more details. 021 022 You should have received a copy of the GNU Lesser General Public 023 License along with this library; if not, write to the Free Software 024 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 025 026 Contact: 027 028 Andreas Poth 029 lat/lon GmbH 030 Aennchenstr. 19 031 53115 Bonn 032 Germany 033 E-Mail: poth@lat-lon.de 034 035 Prof. Dr. Klaus Greve 036 Department of Geography 037 University of Bonn 038 Meckenheimer Allee 166 039 53115 Bonn 040 Germany 041 E-Mail: greve@giub.uni-bonn.de 042 043 044 ---------------------------------------------------------------------------*/ 045 046 package org.deegree.framework.log; 047 048 import java.util.logging.ConsoleHandler; 049 import java.util.logging.Level; 050 051 import org.deegree.framework.util.StringTools; 052 053 /** 054 * Log service provided by Java logging API.<BR/> 055 * The log environment is fully configurable using a configuration file. 056 * The configuration file name is <code>logging.properties</code>. 057 * 058 * @author <a href="mailto:tfr@users.sourceforge.net">Torsten Friebe </A> 059 * 060 * @author last edited by: $Author: bezema $ 061 * 062 * @version 2.0, $Revision: 6259 $, $Date: 2007-03-20 10:15:15 +0100 (Di, 20 Mär 2007) $ 063 * 064 * @see <a 065 * href="http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html">Java 066 * Logging Overview </a> 067 * 068 * @since 2.0 069 */ 070 final class JavaLogger extends LoggerService { 071 072 private java.util.logging.Logger log; 073 074 /** 075 * 076 * 077 */ 078 JavaLogger() { 079 super(); 080 } 081 082 /** 083 * @see org.deegree.framework.log.ILogger#bindClass(java.lang.String) 084 */ 085 public void bindClass( String string ) { 086 log = java.util.logging.Logger.getLogger( string ); 087 088 try { 089 // java.util.logging.Handler handler = new FileHandler( "%t" + defaultChannelName 090 // + "_%g.log", 100000, 3, true ); 091 java.util.logging.Handler handler = new ConsoleHandler(); 092 handler.setFormatter( new java.util.logging.SimpleFormatter() ); 093 log.addHandler( handler ); 094 } catch ( SecurityException e ) { 095 log.warning( e.getMessage() ); 096 } 097 } 098 099 /** 100 * @see org.deegree.framework.log.ILogger#bindClass(java.lang.Class) 101 */ 102 public void bindClass( Class class1 ) { 103 bindClass( class1.getName() ); 104 } 105 106 /** 107 * @see org.deegree.framework.log.ILogger#logDebug(java.lang.String, java.lang.Throwable) 108 */ 109 @Override 110 public void logDebug( String string, Throwable throwable ) { 111 if ( throwable != null ) 112 log.fine( new StringBuffer().append( string ).append( ":" ).append( 113 throwable.getMessage() ).toString() ); 114 115 else 116 log.fine( string ); 117 } 118 119 /** 120 * @see org.deegree.framework.log.ILogger#logInfo(java.lang.String, java.lang.Throwable) 121 */ 122 @Override 123 public void logInfo( String string, Throwable throwable ) { 124 if ( throwable != null ) { 125 StringBuffer sb = new StringBuffer( 200 ); 126 sb.append( string ).append( ':' ).append( throwable.getMessage() ); 127 log.info( sb.toString() ); 128 129 } else { 130 log.info( string ); 131 } 132 } 133 134 /** 135 * @see org.deegree.framework.log.ILogger#logWarning(java.lang.String, java.lang.Throwable) 136 */ 137 @Override 138 public void logWarning( String string, Throwable throwable ) { 139 if ( throwable != null ) { 140 StringBuffer sb = new StringBuffer( 200 ); 141 sb.append( string ).append( ':' ).append( throwable.getMessage() ); 142 log.warning( sb.toString() ); 143 144 } else { 145 log.warning( string ); 146 } 147 } 148 149 /** 150 * @see org.deegree.framework.log.ILogger#logError(java.lang.String, java.lang.Throwable) 151 */ 152 public void logError( String string, Throwable throwable ) { 153 if ( throwable != null ) 154 log.severe( StringTools.concat( 1000, string, ':', 155 StringTools.stackTraceToString( throwable ) ) ); 156 157 else 158 log.severe( string ); 159 160 sendMail( string, throwable, null ); 161 } 162 163 /** 164 * @see org.deegree.framework.log.ILogger#logDebug(java.lang.String) 165 */ 166 @Override 167 public void logDebug( String string ) { 168 logDebug( string, null ); 169 } 170 171 /** 172 * @see org.deegree.framework.log.ILogger#logInfo(java.lang.String) 173 */ 174 @Override 175 public void logInfo( String string ) { 176 logInfo( string, null ); 177 } 178 179 /** 180 * @see org.deegree.framework.log.ILogger#logWarning(java.lang.String) 181 */ 182 @Override 183 public void logWarning( String string ) { 184 logWarning( string, null ); 185 } 186 187 /** 188 * @see org.deegree.framework.log.ILogger#logError(java.lang.String) 189 */ 190 public void logError( String string ) { 191 logError( string, null ); 192 } 193 194 /** 195 * @see org.deegree.framework.log.ILogger#logInfo(java.lang.String, java.lang.Object) 196 */ 197 public void logInfo( String string, Object object ) { 198 if ( object != null ) 199 logInfo( new StringBuffer().append( string ).append( object.toString() ).toString() ); 200 201 else 202 logInfo( string ); 203 } 204 205 /** 206 * @see org.deegree.framework.log.ILogger#logDebug(java.lang.String, java.lang.Object) 207 */ 208 public void logDebug( String string, Object object ) { 209 if ( object != null ) 210 logDebug( new StringBuffer().append( string ).append( object.toString() ).toString() ); 211 212 else 213 logDebug( string ); 214 } 215 216 /** 217 * @see org.deegree.framework.log.ILogger#log(int, java.lang.String, java.lang.Throwable) 218 */ 219 public void log( int i, String string, Throwable throwable ) { 220 log.log( Level.INFO, string, throwable ); 221 } 222 223 /** 224 * @see org.deegree.framework.log.ILogger#log(int, java.lang.String, java.lang.Object, java.lang.Throwable) 225 */ 226 public void log( int i, String string, Object object, Throwable throwable ) { 227 log.log( Level.INFO, 228 new StringBuffer().append( string ).append( ":" ).append( throwable.getMessage() ).toString(), 229 object ); 230 } 231 232 /** 233 * @see java.lang.Object#toString() 234 */ 235 @Override 236 public String toString() { 237 return ( new StringBuffer().append( "Logging Class: " ).append( log.getClass().getName() ).toString() ); 238 } 239 240 /** 241 * @see org.deegree.framework.log.ILogger#getLevel() 242 */ 243 public int getLevel() { 244 return this.getInternalLevel( this.log.getLevel() ); 245 } 246 247 /** 248 * @see org.deegree.framework.log.ILogger#setLevel(int) 249 */ 250 public void setLevel( int level ) { 251 this.log.setLevel( this.getJavaLogLevel( level ) ); 252 } 253 254 private Level getJavaLogLevel( int logLevel ) { 255 Level javaloglevel; 256 switch ( logLevel ) { 257 case ILogger.LOG_DEBUG: 258 javaloglevel = Level.FINEST; 259 break; 260 case ILogger.LOG_INFO: 261 javaloglevel = Level.INFO; 262 break; 263 case ILogger.LOG_WARNING: 264 javaloglevel = Level.WARNING; 265 break; 266 case ILogger.LOG_ERROR: 267 javaloglevel = Level.SEVERE; 268 break; 269 default: 270 javaloglevel = Level.INFO; 271 break; 272 } 273 return javaloglevel; 274 } 275 276 private int getInternalLevel( Level javaLogLevel ) { 277 int intloglevel = ILogger.LOG_INFO; 278 if ( Level.FINEST.equals( javaLogLevel ) ) { 279 intloglevel = ILogger.LOG_DEBUG; 280 } else if ( Level.INFO.equals( javaLogLevel ) ) { 281 intloglevel = ILogger.LOG_INFO; 282 } else if ( Level.WARNING.equals( javaLogLevel ) ) { 283 intloglevel = ILogger.LOG_WARNING; 284 } else if ( Level.SEVERE.equals( javaLogLevel ) ) { 285 intloglevel = ILogger.LOG_ERROR; 286 } 287 return intloglevel; 288 } 289 290 public boolean isDebug() { 291 return ( log.getLevel().intValue() == Level.FINEST.intValue() ); 292 } 293 294 } 295 296 /******************************************************************************* 297 * Changes to this class. What the people have been up to: $Log: 298 * JavaLogger.java,v $ Revision 1.2 2004/06/15 14:58:19 tf refactored Logger and 299 * add new methods 300 * 301 * Revision 1.1 2004/05/14 15:26:38 tf initial checkin 302 * 303 * 304 ******************************************************************************/