1dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis/* 2dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Copyright (c) 2004-2013 QOS.ch 3dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * All rights reserved. 4dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 5dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Permission is hereby granted, free of charge, to any person obtaining 6dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * a copy of this software and associated documentation files (the 7dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * "Software"), to deal in the Software without restriction, including 8dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * without limitation the rights to use, copy, modify, merge, publish, 9dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * distribute, sublicense, and/or sell copies of the Software, and to 10dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * permit persons to whom the Software is furnished to do so, subject to 11dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the following conditions: 12dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 13dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * The above copyright notice and this permission notice shall be 14dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * included in all copies or substantial portions of the Software. 15dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 16dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 24dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 25dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landispackage org.slf4j.impl; 26dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 27dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landisimport android.util.Log; 28dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landisimport org.slf4j.helpers.FormattingTuple; 29dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landisimport org.slf4j.helpers.MarkerIgnoringBase; 30dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landisimport org.slf4j.helpers.MessageFormatter; 31dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 32dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis/** 33dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p>A simple implementation that delegates all log requests to the Google Android 34dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * logging facilities. Note that this logger does not support {@link org.slf4j.Marker}. 35dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Methods taking marker data as parameter simply invoke the eponymous method 36dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * without the Marker argument, discarding any marker data in the process.</p> 37dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 38dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p>The logging levels specified for SLF4J can be almost directly mapped to 39dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the levels that exist in the Google Android platform. The following table 40dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * shows the mapping implemented by this logger.</p> 41dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 42dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <table border="1"> 43dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><th><b>SLF4J<b></th><th><b>Android</b></th></tr> 44dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><td>TRACE</td><td>{@link android.util.Log#VERBOSE}</td></tr> 45dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><td>DEBUG</td><td>{@link android.util.Log#DEBUG}</td></tr> 46dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><td>INFO</td><td>{@link android.util.Log#INFO}</td></tr> 47dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><td>WARN</td><td>{@link android.util.Log#WARN}</td></tr> 48dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><td>ERROR</td><td>{@link android.util.Log#ERROR}</td></tr> 49dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </table> 50dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 51dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p>Use loggers as usual: 52dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <ul> 53dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <li> 54dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Declare a logger<br/> 55dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <code>private static final Logger logger = LoggerFactory.getLogger(MyClass.class);</code> 56dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </li> 57dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <li> 58dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Invoke logging methods, e.g.,<br/> 59dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <code>logger.debug("Some log message. Details: {}", someObject);</code><br/> 60dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <code>logger.debug("Some log message with varargs. Details: {}, {}, {}", someObject1, someObject2, someObject3);</code> 61dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </li> 62dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </ul> 63dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 64dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 65dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p>Logger instances created using the LoggerFactory are named either according to the name 66dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * or the fully qualified class name of the class given as a parameter. 67dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Each logger name will be used as the log message tag on the Android platform. 68dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * However, tag names cannot be longer than 23 characters so if logger name exceeds this limit then 69dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * it will be truncated by the LoggerFactory. The following examples illustrate this. 70dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <table border="1"> 71dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><th><b>Original Name<b></th><th><b>Truncated Name</b></th></tr> 72dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><td>org.example.myproject.mypackage.MyClass</td><td>o*.e*.m*.m*.MyClass</td></tr> 73dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><td>o.e.myproject.mypackage.MyClass</td><td>o.e.m*.m*.MyClass</td></tr> 74dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><td>org.example.ThisNameIsWayTooLongAndWillBeTruncated</td><td>*LongAndWillBeTruncated</td></tr> 75dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <tr><td>ThisNameIsWayTooLongAndWillBeTruncated</td><td>*LongAndWillBeTruncated</td></tr> 76dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </table> 77dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 78dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 79dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @author Andrey Korzhevskiy <a.korzhevskiy@gmail.com> 80dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 81dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landisclass AndroidLoggerAdapter extends MarkerIgnoringBase { 82dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis private static final long serialVersionUID = -1227274521521287937L; 83dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 84dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 85dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 86dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Package access allows only {@link AndroidLoggerFactory} to instantiate 87dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * SimpleLogger instances. 88dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 89dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis AndroidLoggerAdapter(String tag) { 90dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis this.name = tag; 91dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 92dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 93dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 94dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Is this logger instance enabled for the VERBOSE level? 95dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 96dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @return True if this Logger is enabled for level VERBOSE, false otherwise. 97dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 98dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public boolean isTraceEnabled() { 99dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis return isLoggable(Log.VERBOSE); 100dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 101dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 102dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 103dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message object at level VERBOSE. 104dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 105dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 106dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * - the message object to be logged 107dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 108dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void trace(String msg) { 109dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.VERBOSE, msg, null); 110dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 111dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 112dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 113dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level VERBOSE according to the specified format and 114dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * argument. 115dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 116dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 117dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 118dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for level VERBOSE. 119dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 120dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 121dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 122dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 123dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg 124dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the argument 125dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 126dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void trace(String format, Object arg) { 127dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.VERBOSE, format, arg); 128dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 129dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 130dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 131dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level VERBOSE according to the specified format and 132dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 133dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 134dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 135dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 136dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the VERBOSE level. 137dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 138dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 139dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 140dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 141dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg1 142dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the first argument 143dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg2 144dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the second argument 145dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 146dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void trace(String format, Object arg1, Object arg2) { 147dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.VERBOSE, format, arg1, arg2); 148dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 149dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 150dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 151dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level VERBOSE according to the specified format and 152dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 153dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 154dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 155dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 156dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the VERBOSE level. 157dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 158dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 159dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 160dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 161dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param argArray 162dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * an array of arguments 163dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 164dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void trace(String format, Object... argArray) { 165dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.VERBOSE, format, argArray); 166dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 167dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 168dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 169dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log an exception (throwable) at level VERBOSE with an accompanying message. 170dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 171dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 172dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the message accompanying the exception 173dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param t 174dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the exception (throwable) to log 175dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 176dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void trace(String msg, Throwable t) { 177dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.VERBOSE, msg, t); 178dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 179dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 180dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 181dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Is this logger instance enabled for the DEBUG level? 182dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 183dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @return True if this Logger is enabled for level DEBUG, false otherwise. 184dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 185dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public boolean isDebugEnabled() { 186dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis return isLoggable(Log.DEBUG); 187dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 188dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 189dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 190dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message object at level DEBUG. 191dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 192dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 193dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * - the message object to be logged 194dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 195dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void debug(String msg) { 196dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.DEBUG, msg, null); 197dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 198dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 199dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 200dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level DEBUG according to the specified format and argument. 201dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 202dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 203dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 204dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for level DEBUG. 205dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 206dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 207dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 208dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 209dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg 210dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the argument 211dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 212dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void debug(String format, Object arg) { 213dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.DEBUG, format, arg); 214dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 215dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 216dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 217dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level DEBUG according to the specified format and 218dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 219dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 220dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 221dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 222dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the DEBUG level. 223dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 224dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 225dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 226dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 227dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg1 228dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the first argument 229dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg2 230dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the second argument 231dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 232dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void debug(String format, Object arg1, Object arg2) { 233dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.DEBUG, format, arg1, arg2); 234dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 235dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 236dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 237dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level DEBUG according to the specified format and 238dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 239dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 240dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 241dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 242dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the DEBUG level. 243dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 244dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 245dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 246dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 247dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param argArray 248dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * an array of arguments 249dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 250dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void debug(String format, Object... argArray) { 251dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.DEBUG, format, argArray); 252dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 253dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 254dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 255dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log an exception (throwable) at level DEBUG with an accompanying message. 256dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 257dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 258dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the message accompanying the exception 259dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param t 260dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the exception (throwable) to log 261dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 262dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void debug(String msg, Throwable t) { 263dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.VERBOSE, msg, t); 264dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 265dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 266dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 267dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Is this logger instance enabled for the INFO level? 268dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 269dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @return True if this Logger is enabled for the INFO level, false otherwise. 270dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 271dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public boolean isInfoEnabled() { 272dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis return isLoggable(Log.INFO); 273dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 274dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 275dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 276dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message object at the INFO level. 277dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 278dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 279dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * - the message object to be logged 280dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 281dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void info(String msg) { 282dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.INFO, msg, null); 283dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 284dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 285dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 286dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level INFO according to the specified format and argument. 287dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 288dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 289dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 290dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the INFO level. 291dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 292dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 293dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 294dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 295dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg 296dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the argument 297dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 298dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void info(String format, Object arg) { 299dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.INFO, format, arg); 300dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 301dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 302dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 303dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at the INFO level according to the specified format and 304dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 305dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 306dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 307dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 308dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the INFO level. 309dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 310dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 311dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 312dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 313dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg1 314dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the first argument 315dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg2 316dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the second argument 317dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 318dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void info(String format, Object arg1, Object arg2) { 319dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.INFO, format, arg1, arg2); 320dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 321dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 322dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 323dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level INFO according to the specified format and 324dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 325dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 326dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 327dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 328dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the INFO level. 329dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 330dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 331dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 332dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 333dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param argArray 334dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * an array of arguments 335dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 336dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void info(String format, Object... argArray) { 337dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.INFO, format, argArray); 338dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 339dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 340dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 341dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log an exception (throwable) at the INFO level with an accompanying 342dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * message. 343dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 344dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 345dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the message accompanying the exception 346dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param t 347dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the exception (throwable) to log 348dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 349dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void info(String msg, Throwable t) { 350dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.INFO, msg, t); 351dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 352dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 353dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 354dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Is this logger instance enabled for the WARN level? 355dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 356dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @return True if this Logger is enabled for the WARN level, false 357dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * otherwise. 358dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 359dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public boolean isWarnEnabled() { 360dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis return isLoggable(Log.WARN); 361dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 362dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 363dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 364dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message object at the WARN level. 365dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 366dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 367dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * - the message object to be logged 368dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 369dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void warn(String msg) { 370dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.WARN, msg, null); 371dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 372dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 373dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 374dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at the WARN level according to the specified format and 375dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * argument. 376dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 377dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 378dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 379dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the WARN level. 380dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 381dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 382dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 383dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 384dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg 385dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the argument 386dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 387dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void warn(String format, Object arg) { 388dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.WARN, format, arg); 389dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 390dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 391dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 392dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at the WARN level according to the specified format and 393dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 394dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 395dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 396dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 397dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the WARN level. 398dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 399dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 400dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 401dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 402dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg1 403dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the first argument 404dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg2 405dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the second argument 406dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 407dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void warn(String format, Object arg1, Object arg2) { 408dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.WARN, format, arg1, arg2); 409dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 410dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 411dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 412dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level WARN according to the specified format and 413dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 414dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 415dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 416dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 417dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the WARN level. 418dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 419dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 420dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 421dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 422dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param argArray 423dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * an array of arguments 424dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 425dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void warn(String format, Object... argArray) { 426dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.WARN, format, argArray); 427dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 428dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 429dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 430dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log an exception (throwable) at the WARN level with an accompanying 431dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * message. 432dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 433dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 434dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the message accompanying the exception 435dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param t 436dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the exception (throwable) to log 437dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 438dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void warn(String msg, Throwable t) { 439dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.WARN, msg, t); 440dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 441dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 442dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 443dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Is this logger instance enabled for level ERROR? 444dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 445dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @return True if this Logger is enabled for level ERROR, false otherwise. 446dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 447dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public boolean isErrorEnabled() { 448dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis return isLoggable(Log.ERROR); 449dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 450dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 451dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 452dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message object at the ERROR level. 453dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 454dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 455dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * - the message object to be logged 456dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 457dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void error(String msg) { 458dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.ERROR, msg, null); 459dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 460dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 461dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 462dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at the ERROR level according to the specified format and 463dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * argument. 464dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 465dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 466dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 467dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the ERROR level. 468dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 469dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 470dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 471dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 472dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg 473dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the argument 474dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 475dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void error(String format, Object arg) { 476dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.ERROR, format, arg); 477dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 478dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 479dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 480dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at the ERROR level according to the specified format and 481dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 482dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 483dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 484dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 485dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the ERROR level. 486dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 487dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 488dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 489dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 490dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg1 491dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the first argument 492dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param arg2 493dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the second argument 494dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 495dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void error(String format, Object arg1, Object arg2) { 496dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.ERROR, format, arg1, arg2); 497dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 498dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 499dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 500dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log a message at level ERROR according to the specified format and 501dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * arguments. 502dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 503dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * <p> 504dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * This form avoids superfluous object creation when the logger is disabled 505dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * for the ERROR level. 506dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * </p> 507dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 508dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param format 509dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the format string 510dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param argArray 511dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * an array of arguments 512dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 513dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void error(String format, Object... argArray) { 514dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis formatAndLog(Log.ERROR, format, argArray); 515dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 516dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 517dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis /** 518dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * Log an exception (throwable) at the ERROR level with an accompanying 519dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * message. 520dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * 521dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param msg 522dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the message accompanying the exception 523dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * @param t 524dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis * the exception (throwable) to log 525dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis */ 526dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis public void error(String msg, Throwable t) { 527dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis log(Log.ERROR, msg, t); 528dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 529dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 530dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis private void formatAndLog(int priority, String format, Object... argArray) { 531dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis if (isLoggable(priority)) { 532dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray); 533dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis _log(priority, ft.getMessage(), ft.getThrowable()); 534dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 535dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 536dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 537dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis private void log(int priority, String message, Throwable throwable) { 538dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis if (isLoggable(priority)) { 539dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis _log(priority, message, throwable); 540dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 541dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 542dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 543dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis private boolean isLoggable(int priority) { 544dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis return Log.isLoggable(name, priority); 545dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 546dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis 547dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis private void _log(int priority, String message, Throwable throwable) { 548dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis if (throwable != null) { 549dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis message += '\n' + Log.getStackTraceString(throwable); 550dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 551dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis Log.println(priority, name, message); 552dd7ec6b31e6235b73a80a231bf4a3236da4f866cJeremy Landis } 553c75ac9a06d51da591a2217b32df347c11bfec40cAndrey Korzhevskiy}