001/** 002 * Copyright (c) 2015-2022, Michael Yang 杨福海 (fuhai999@gmail.com). 003 * <p> 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * <p> 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * <p> 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package io.jboot.core.log; 017 018import com.jfinal.log.Log; 019import com.jfinal.log.LogInfo; 020import io.jboot.exception.JbootExceptionHolder; 021 022import java.util.logging.Level; 023 024/** 025 * JdkLogger from JdkLog. 026 */ 027public class JdkLogger extends Log { 028 029 private java.util.logging.Logger log; 030 private String clazzName; 031 032 JdkLogger(Class<?> clazz) { 033 log = java.util.logging.Logger.getLogger(clazz.getName()); 034 clazzName = clazz.getName(); 035 } 036 037 JdkLogger(String name) { 038 log = java.util.logging.Logger.getLogger(name); 039 clazzName = name; 040 } 041 042 @Override 043 public void trace(String message) { 044 log.logp(Level.FINEST, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message); 045 } 046 047 @Override 048 public void trace(String message, Throwable t) { 049 log.logp(Level.FINEST, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message, t); 050 } 051 052 @Override 053 public void debug(String message) { 054 log.logp(Level.FINE, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message); 055 } 056 057 @Override 058 public void debug(String message, Throwable t) { 059 log.logp(Level.FINE, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message, t); 060 } 061 062 @Override 063 public void info(String message) { 064 log.logp(Level.INFO, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message); 065 } 066 067 @Override 068 public void info(String message, Throwable t) { 069 log.logp(Level.INFO, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message, t); 070 } 071 072 @Override 073 public void warn(String message) { 074 log.logp(Level.WARNING, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message); 075 } 076 077 @Override 078 public void warn(String message, Throwable t) { 079 log.logp(Level.WARNING, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message, t); 080 } 081 082 @Override 083 public void error(String message) { 084 JbootExceptionHolder.hold(message,null); 085 log.logp(Level.SEVERE, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message); 086 } 087 088 @Override 089 public void error(String message, Throwable t) { 090 JbootExceptionHolder.hold(message, t); 091 log.logp(Level.SEVERE, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message, t); 092 } 093 094 /** 095 * JdkLog fatal is the same as the error. 096 */ 097 @Override 098 public void fatal(String message) { 099 log.logp(Level.SEVERE, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message); 100 } 101 102 /** 103 * JdkLog fatal is the same as the error. 104 */ 105 @Override 106 public void fatal(String message, Throwable t) { 107 JbootExceptionHolder.hold(message, t); 108 log.logp(Level.SEVERE, clazzName, Thread.currentThread().getStackTrace()[1].getMethodName(), message, t); 109 } 110 111 @Override 112 public boolean isTraceEnabled() { 113 return log.isLoggable(Level.FINEST); 114 } 115 116 @Override 117 public boolean isDebugEnabled() { 118 return log.isLoggable(Level.FINE); 119 } 120 121 @Override 122 public boolean isInfoEnabled() { 123 return log.isLoggable(Level.INFO); 124 } 125 126 @Override 127 public boolean isWarnEnabled() { 128 return log.isLoggable(Level.WARNING); 129 } 130 131 @Override 132 public boolean isErrorEnabled() { 133 return log.isLoggable(Level.SEVERE); 134 } 135 136 @Override 137 public boolean isFatalEnabled() { 138 return log.isLoggable(Level.SEVERE); 139 } 140 141 // ------------------------------------------------------- 142 143 /* 144 * 以下方法与前面的两个 trace 方法必须覆盖父类中的实现,否则日志中的类名为 145 * com.jfinal.log.Log 而非所需要的日志发生地点的类名 146 */ 147 148 @Override 149 public void trace(String format, Object... args) { 150 if (isTraceEnabled()) { 151 if (endsWithThrowable(args)) { 152 LogInfo li = parse(format, args); 153 trace(li.message, li.throwable); 154 } else { 155 trace(String.format(format, args)); 156 } 157 } 158 } 159 160 @Override 161 public void debug(String format, Object... args) { 162 if (isDebugEnabled()) { 163 if (endsWithThrowable(args)) { 164 LogInfo li = parse(format, args); 165 debug(li.message, li.throwable); 166 } else { 167 debug(String.format(format, args)); 168 } 169 } 170 } 171 172 @Override 173 public void info(String format, Object... args) { 174 if (isInfoEnabled()) { 175 if (endsWithThrowable(args)) { 176 LogInfo li = parse(format, args); 177 info(li.message, li.throwable); 178 } else { 179 info(String.format(format, args)); 180 } 181 } 182 } 183 184 @Override 185 public void warn(String format, Object... args) { 186 if (isWarnEnabled()) { 187 if (endsWithThrowable(args)) { 188 LogInfo li = parse(format, args); 189 warn(li.message, li.throwable); 190 } else { 191 warn(String.format(format, args)); 192 } 193 } 194 } 195 196 @Override 197 public void error(String format, Object... args) { 198 if (isErrorEnabled()) { 199 if (endsWithThrowable(args)) { 200 LogInfo li = parse(format, args); 201 error(li.message, li.throwable); 202 } else { 203 error(String.format(format, args)); 204 } 205 } 206 } 207 208 @Override 209 public void fatal(String format, Object... args) { 210 if (isFatalEnabled()) { 211 if (endsWithThrowable(args)) { 212 LogInfo li = parse(format, args); 213 fatal(li.message, li.throwable); 214 } else { 215 fatal(String.format(format, args)); 216 } 217 } 218 } 219} 220 221 222