Home | History | Annotate | Download | only in logger
      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     // 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