1/* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16package com.example.android.common.logger; 17 18/** 19 * Helper class for a list (or tree) of LoggerNodes. 20 * 21 * <p>When this is set as the head of the list, 22 * an instance of it can function as a drop-in replacement for {@link android.util.Log}. 23 * Most of the methods in this class server only to map a method call in Log to its equivalent 24 * in LogNode.</p> 25 */ 26public class Log { 27 // Grabbing the native values from Android's native logging facilities, 28 // to make for easy migration and interop. 29 public static final int NONE = -1; 30 public static final int VERBOSE = android.util.Log.VERBOSE; 31 public static final int DEBUG = android.util.Log.DEBUG; 32 public static final int INFO = android.util.Log.INFO; 33 public static final int WARN = android.util.Log.WARN; 34 public static final int ERROR = android.util.Log.ERROR; 35 public static final int ASSERT = android.util.Log.ASSERT; 36 37 // Stores the beginning of the LogNode topology. 38 private static LogNode mLogNode; 39 40 /** 41 * Returns the next LogNode in the linked list. 42 */ 43 public static LogNode getLogNode() { 44 return mLogNode; 45 } 46 47 /** 48 * Sets the LogNode data will be sent to. 49 */ 50 public static void setLogNode(LogNode node) { 51 mLogNode = node; 52 } 53 54 /** 55 * Instructs the LogNode to print the log data provided. Other LogNodes can 56 * be chained to the end of the LogNode as desired. 57 * 58 * @param priority Log level of the data being logged. Verbose, Error, etc. 59 * @param tag Tag for for the log data. Can be used to organize log statements. 60 * @param msg The actual message to be logged. 61 * @param tr If an exception was thrown, this can be sent along for the logging facilities 62 * to extract and print useful information. 63 */ 64 public static void println(int priority, String tag, String msg, Throwable tr) { 65 if (mLogNode != null) { 66 mLogNode.println(priority, tag, msg, tr); 67 } 68 } 69 70 /** 71 * Instructs the LogNode to print the log data provided. Other LogNodes can 72 * be chained to the end of the LogNode as desired. 73 * 74 * @param priority Log level of the data being logged. Verbose, Error, etc. 75 * @param tag Tag for for the log data. Can be used to organize log statements. 76 * @param msg The actual message to be logged. The actual message to be logged. 77 */ 78 public static void println(int priority, String tag, String msg) { 79 println(priority, tag, msg, null); 80 } 81 82 /** 83 * Prints a message at VERBOSE priority. 84 * 85 * @param tag Tag for for the log data. Can be used to organize log statements. 86 * @param msg The actual message to be logged. 87 * @param tr If an exception was thrown, this can be sent along for the logging facilities 88 * to extract and print useful information. 89 */ 90 public static void v(String tag, String msg, Throwable tr) { 91 println(VERBOSE, tag, msg, tr); 92 } 93 94 /** 95 * Prints a message at VERBOSE priority. 96 * 97 * @param tag Tag for for the log data. Can be used to organize log statements. 98 * @param msg The actual message to be logged. 99 */ 100 public static void v(String tag, String msg) { 101 v(tag, msg, null); 102 } 103 104 105 /** 106 * Prints a message at DEBUG priority. 107 * 108 * @param tag Tag for for the log data. Can be used to organize log statements. 109 * @param msg The actual message to be logged. 110 * @param tr If an exception was thrown, this can be sent along for the logging facilities 111 * to extract and print useful information. 112 */ 113 public static void d(String tag, String msg, Throwable tr) { 114 println(DEBUG, tag, msg, tr); 115 } 116 117 /** 118 * Prints a message at DEBUG priority. 119 * 120 * @param tag Tag for for the log data. Can be used to organize log statements. 121 * @param msg The actual message to be logged. 122 */ 123 public static void d(String tag, String msg) { 124 d(tag, msg, null); 125 } 126 127 /** 128 * Prints a message at INFO priority. 129 * 130 * @param tag Tag for for the log data. Can be used to organize log statements. 131 * @param msg The actual message to be logged. 132 * @param tr If an exception was thrown, this can be sent along for the logging facilities 133 * to extract and print useful information. 134 */ 135 public static void i(String tag, String msg, Throwable tr) { 136 println(INFO, tag, msg, tr); 137 } 138 139 /** 140 * Prints a message at INFO priority. 141 * 142 * @param tag Tag for for the log data. Can be used to organize log statements. 143 * @param msg The actual message to be logged. 144 */ 145 public static void i(String tag, String msg) { 146 i(tag, msg, null); 147 } 148 149 /** 150 * Prints a message at WARN priority. 151 * 152 * @param tag Tag for for the log data. Can be used to organize log statements. 153 * @param msg The actual message to be logged. 154 * @param tr If an exception was thrown, this can be sent along for the logging facilities 155 * to extract and print useful information. 156 */ 157 public static void w(String tag, String msg, Throwable tr) { 158 println(WARN, tag, msg, tr); 159 } 160 161 /** 162 * Prints a message at WARN priority. 163 * 164 * @param tag Tag for for the log data. Can be used to organize log statements. 165 * @param msg The actual message to be logged. 166 */ 167 public static void w(String tag, String msg) { 168 w(tag, msg, null); 169 } 170 171 /** 172 * Prints a message at WARN priority. 173 * 174 * @param tag Tag for for the log data. Can be used to organize log statements. 175 * @param tr If an exception was thrown, this can be sent along for the logging facilities 176 * to extract and print useful information. 177 */ 178 public static void w(String tag, Throwable tr) { 179 w(tag, null, tr); 180 } 181 182 /** 183 * Prints a message at ERROR priority. 184 * 185 * @param tag Tag for for the log data. Can be used to organize log statements. 186 * @param msg The actual message to be logged. 187 * @param tr If an exception was thrown, this can be sent along for the logging facilities 188 * to extract and print useful information. 189 */ 190 public static void e(String tag, String msg, Throwable tr) { 191 println(ERROR, tag, msg, tr); 192 } 193 194 /** 195 * Prints a message at ERROR priority. 196 * 197 * @param tag Tag for for the log data. Can be used to organize log statements. 198 * @param msg The actual message to be logged. 199 */ 200 public static void e(String tag, String msg) { 201 e(tag, msg, null); 202 } 203 204 /** 205 * Prints a message at ASSERT priority. 206 * 207 * @param tag Tag for for the log data. Can be used to organize log statements. 208 * @param msg The actual message to be logged. 209 * @param tr If an exception was thrown, this can be sent along for the logging facilities 210 * to extract and print useful information. 211 */ 212 public static void wtf(String tag, String msg, Throwable tr) { 213 println(ASSERT, tag, msg, tr); 214 } 215 216 /** 217 * Prints a message at ASSERT priority. 218 * 219 * @param tag Tag for for the log data. Can be used to organize log statements. 220 * @param msg The actual message to be logged. 221 */ 222 public static void wtf(String tag, String msg) { 223 wtf(tag, msg, null); 224 } 225 226 /** 227 * Prints a message at ASSERT priority. 228 * 229 * @param tag Tag for for the log data. Can be used to organize log statements. 230 * @param tr If an exception was thrown, this can be sent along for the logging facilities 231 * to extract and print useful information. 232 */ 233 public static void wtf(String tag, Throwable tr) { 234 wtf(tag, null, tr); 235 } 236} 237