001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.kernel.log;
019
020 import java.util.logging.ConsoleHandler;
021 import java.util.logging.Handler;
022 import java.util.logging.Level;
023 import java.util.logging.Logger;
024
025 import org.apache.commons.logging.Log;
026
027 /**
028 * Bootstrap log implementation for use with JDK 1.4 logging.
029 *
030 * @version $Rev: 706640 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $
031 */
032 public class BootstrapJdk14Log implements Log {
033 static {
034 if (GeronimoLogging.isBootstrapLoggingInitializationEnabled()) {
035 Logger root = Logger.getLogger("");
036
037 GeronimoLogging geronimoLevel = GeronimoLogging.getDefaultLevel();
038 Level javaLevel;
039 if (geronimoLevel == GeronimoLogging.TRACE) {
040 javaLevel = Level.FINEST;
041 } else if (geronimoLevel == GeronimoLogging.DEBUG) {
042 javaLevel = Level.FINE;
043 } else if (geronimoLevel == GeronimoLogging.INFO) {
044 javaLevel = Level.INFO;
045 } else if (geronimoLevel == GeronimoLogging.WARN) {
046 javaLevel = Level.WARNING;
047 } else {
048 javaLevel = Level.SEVERE;
049 }
050
051 // set the root level
052 root.setLevel(javaLevel);
053
054 // set the console handler level (if present)
055 Handler[] handlers = root.getHandlers();
056 for (int index = 0; index < handlers.length; index++) {
057 if (handlers[index] instanceof ConsoleHandler) {
058 handlers[index].setLevel(javaLevel);
059 }
060 }
061 }
062 }
063
064 private Logger logger = null;
065
066 public BootstrapJdk14Log(String name) {
067 logger = Logger.getLogger(name);
068 }
069
070 private void log(Level level, String messge, Throwable throwable) {
071 if (logger.isLoggable(level)) {
072 // need to determine if caller class name and method
073 StackTraceElement locations[] = new Throwable().getStackTrace();
074
075 // Caller will be the forth element
076 String cname = "unknown";
077 String method = "unknown";
078 if (locations != null && locations.length > 3) {
079 StackTraceElement caller = locations[3];
080 cname = caller.getClassName();
081 method = caller.getMethodName();
082 }
083 if (throwable == null) {
084 logger.logp(level, cname, method, messge);
085 } else {
086 logger.logp(level, cname, method, messge, throwable);
087 }
088 }
089 }
090
091 public void debug(Object message) {
092 log(Level.FINE, String.valueOf(message), null);
093 }
094
095 public void debug(Object message, Throwable exception) {
096 log(Level.FINE, String.valueOf(message), exception);
097 }
098
099 public void error(Object message) {
100 log(Level.SEVERE, String.valueOf(message), null);
101 }
102
103 public void error(Object message, Throwable exception) {
104 log(Level.SEVERE, String.valueOf(message), exception);
105 }
106
107 public void fatal(Object message) {
108 log(Level.SEVERE, String.valueOf(message), null);
109 }
110
111 public void fatal(Object message, Throwable exception) {
112 log(Level.SEVERE, String.valueOf(message), exception);
113 }
114
115 public Logger getLogger() {
116 return this.logger;
117 }
118
119 public void info(Object message) {
120 log(Level.INFO, String.valueOf(message), null);
121 }
122
123 public void info(Object message, Throwable exception) {
124 log(Level.INFO, String.valueOf(message), exception);
125 }
126
127 public boolean isDebugEnabled() {
128 return (logger.isLoggable(Level.FINE));
129 }
130
131 public boolean isErrorEnabled() {
132 return (logger.isLoggable(Level.SEVERE));
133 }
134
135 public boolean isFatalEnabled() {
136 return (logger.isLoggable(Level.SEVERE));
137 }
138
139 public boolean isInfoEnabled() {
140 return (logger.isLoggable(Level.INFO));
141 }
142
143 public boolean isTraceEnabled() {
144 return (logger.isLoggable(Level.FINEST));
145 }
146
147 public boolean isWarnEnabled() {
148 return (logger.isLoggable(Level.WARNING));
149 }
150
151 public void trace(Object message) {
152 log(Level.FINEST, String.valueOf(message), null);
153 }
154
155 public void trace(Object message, Throwable exception) {
156 log(Level.FINEST, String.valueOf(message), exception);
157 }
158
159 public void warn(Object message) {
160 log(Level.WARNING, String.valueOf(message), null);
161 }
162
163 public void warn(Object message, Throwable exception) {
164 log(Level.WARNING, String.valueOf(message), exception);
165 }
166 }