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 */ 16 package 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 */ 26 public class Log { 27 28 // Grabbing the native values from Android's native logging facilities, 29 // to make for easy migration and interop. 30 public static final int NONE = -1; 31 32 public static final int VERBOSE = android.util.Log.VERBOSE; 33 34 public static final int DEBUG = android.util.Log.DEBUG; 35 36 public static final int INFO = android.util.Log.INFO; 37 38 public static final int WARN = android.util.Log.WARN; 39 40 public static final int ERROR = android.util.Log.ERROR; 41 42 public static final int ASSERT = android.util.Log.ASSERT; 43 44 // Stores the beginning of the LogNode topology. 45 private static LogNode mLogNode; 46 47 /** 48 * Returns the next LogNode in the linked list. 49 */ getLogNode()50 public static LogNode getLogNode() { 51 return mLogNode; 52 } 53 54 /** 55 * Sets the LogNode data will be sent to. 56 */ setLogNode(LogNode node)57 public static void setLogNode(LogNode node) { 58 mLogNode = node; 59 } 60 61 /** 62 * Instructs the LogNode to print the log data provided. Other LogNodes can 63 * be chained to the end of the LogNode as desired. 64 * 65 * @param priority Log level of the data being logged. Verbose, Error, etc. 66 * @param tag Tag for for the log data. Can be used to organize log statements. 67 * @param msg The actual message to be logged. 68 * @param tr If an exception was thrown, this can be sent along for the logging 69 * facilities 70 * to extract and print useful information. 71 */ println(int priority, String tag, String msg, Throwable tr)72 public static void println(int priority, String tag, String msg, Throwable tr) { 73 if (mLogNode != null) { 74 mLogNode.println(priority, tag, msg, tr); 75 } 76 } 77 78 /** 79 * Instructs the LogNode to print the log data provided. Other LogNodes can 80 * be chained to the end of the LogNode as desired. 81 * 82 * @param priority Log level of the data being logged. Verbose, Error, etc. 83 * @param tag Tag for for the log data. Can be used to organize log statements. 84 * @param msg The actual message to be logged. The actual message to be logged. 85 */ println(int priority, String tag, String msg)86 public static void println(int priority, String tag, String msg) { 87 println(priority, tag, msg, null); 88 } 89 90 /** 91 * Prints a message at VERBOSE priority. 92 * 93 * @param tag Tag for for the log data. Can be used to organize log statements. 94 * @param msg The actual message to be logged. 95 * @param tr If an exception was thrown, this can be sent along for the logging facilities 96 * to extract and print useful information. 97 */ v(String tag, String msg, Throwable tr)98 public static void v(String tag, String msg, Throwable tr) { 99 println(VERBOSE, tag, msg, tr); 100 } 101 102 /** 103 * Prints a message at VERBOSE priority. 104 * 105 * @param tag Tag for for the log data. Can be used to organize log statements. 106 * @param msg The actual message to be logged. 107 */ v(String tag, String msg)108 public static void v(String tag, String msg) { 109 v(tag, msg, null); 110 } 111 112 113 /** 114 * Prints a message at DEBUG priority. 115 * 116 * @param tag Tag for for the log data. Can be used to organize log statements. 117 * @param msg The actual message to be logged. 118 * @param tr If an exception was thrown, this can be sent along for the logging facilities 119 * to extract and print useful information. 120 */ d(String tag, String msg, Throwable tr)121 public static void d(String tag, String msg, Throwable tr) { 122 println(DEBUG, tag, msg, tr); 123 } 124 125 /** 126 * Prints a message at DEBUG priority. 127 * 128 * @param tag Tag for for the log data. Can be used to organize log statements. 129 * @param msg The actual message to be logged. 130 */ d(String tag, String msg)131 public static void d(String tag, String msg) { 132 d(tag, msg, null); 133 } 134 135 /** 136 * Prints a message at INFO priority. 137 * 138 * @param tag Tag for for the log data. Can be used to organize log statements. 139 * @param msg The actual message to be logged. 140 * @param tr If an exception was thrown, this can be sent along for the logging facilities 141 * to extract and print useful information. 142 */ i(String tag, String msg, Throwable tr)143 public static void i(String tag, String msg, Throwable tr) { 144 println(INFO, tag, msg, tr); 145 } 146 147 /** 148 * Prints a message at INFO priority. 149 * 150 * @param tag Tag for for the log data. Can be used to organize log statements. 151 * @param msg The actual message to be logged. 152 */ i(String tag, String msg)153 public static void i(String tag, String msg) { 154 i(tag, msg, null); 155 } 156 157 /** 158 * Prints a message at WARN priority. 159 * 160 * @param tag Tag for for the log data. Can be used to organize log statements. 161 * @param msg The actual message to be logged. 162 * @param tr If an exception was thrown, this can be sent along for the logging facilities 163 * to extract and print useful information. 164 */ w(String tag, String msg, Throwable tr)165 public static void w(String tag, String msg, Throwable tr) { 166 println(WARN, tag, msg, tr); 167 } 168 169 /** 170 * Prints a message at WARN priority. 171 * 172 * @param tag Tag for for the log data. Can be used to organize log statements. 173 * @param msg The actual message to be logged. 174 */ w(String tag, String msg)175 public static void w(String tag, String msg) { 176 w(tag, msg, null); 177 } 178 179 /** 180 * Prints a message at WARN priority. 181 * 182 * @param tag Tag for for the log data. Can be used to organize log statements. 183 * @param tr If an exception was thrown, this can be sent along for the logging facilities 184 * to extract and print useful information. 185 */ w(String tag, Throwable tr)186 public static void w(String tag, Throwable tr) { 187 w(tag, null, tr); 188 } 189 190 /** 191 * Prints a message at ERROR priority. 192 * 193 * @param tag Tag for for the log data. Can be used to organize log statements. 194 * @param msg The actual message to be logged. 195 * @param tr If an exception was thrown, this can be sent along for the logging facilities 196 * to extract and print useful information. 197 */ e(String tag, String msg, Throwable tr)198 public static void e(String tag, String msg, Throwable tr) { 199 println(ERROR, tag, msg, tr); 200 } 201 202 /** 203 * Prints a message at ERROR priority. 204 * 205 * @param tag Tag for for the log data. Can be used to organize log statements. 206 * @param msg The actual message to be logged. 207 */ e(String tag, String msg)208 public static void e(String tag, String msg) { 209 e(tag, msg, null); 210 } 211 212 /** 213 * Prints a message at ASSERT priority. 214 * 215 * @param tag Tag for for the log data. Can be used to organize log statements. 216 * @param msg The actual message to be logged. 217 * @param tr If an exception was thrown, this can be sent along for the logging facilities 218 * to extract and print useful information. 219 */ wtf(String tag, String msg, Throwable tr)220 public static void wtf(String tag, String msg, Throwable tr) { 221 println(ASSERT, tag, msg, tr); 222 } 223 224 /** 225 * Prints a message at ASSERT priority. 226 * 227 * @param tag Tag for for the log data. Can be used to organize log statements. 228 * @param msg The actual message to be logged. 229 */ wtf(String tag, String msg)230 public static void wtf(String tag, String msg) { 231 wtf(tag, msg, null); 232 } 233 234 /** 235 * Prints a message at ASSERT priority. 236 * 237 * @param tag Tag for for the log data. Can be used to organize log statements. 238 * @param tr If an exception was thrown, this can be sent along for the logging facilities 239 * to extract and print useful information. 240 */ wtf(String tag, Throwable tr)241 public static void wtf(String tag, Throwable tr) { 242 wtf(tag, null, tr); 243 } 244 } 245