Home | History | Annotate | Download | only in util
      1 /*
      2  * Copyright (C) 2006 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 
     17 package android.util;
     18 
     19 import java.io.PrintWriter;
     20 import java.io.StringWriter;
     21 import java.net.UnknownHostException;
     22 
     23 /**
     24  * Mock Log implementation for testing on non android host.
     25  */
     26 public final class Log {
     27 
     28     /**
     29      * Priority constant for the println method; use Log.v.
     30      */
     31     public static final int VERBOSE = 2;
     32 
     33     /**
     34      * Priority constant for the println method; use Log.d.
     35      */
     36     public static final int DEBUG = 3;
     37 
     38     /**
     39      * Priority constant for the println method; use Log.i.
     40      */
     41     public static final int INFO = 4;
     42 
     43     /**
     44      * Priority constant for the println method; use Log.w.
     45      */
     46     public static final int WARN = 5;
     47 
     48     /**
     49      * Priority constant for the println method; use Log.e.
     50      */
     51     public static final int ERROR = 6;
     52 
     53     /**
     54      * Priority constant for the println method.
     55      */
     56     public static final int ASSERT = 7;
     57 
     58     private Log() {
     59     }
     60 
     61     /**
     62      * Send a {@link #VERBOSE} log message.
     63      * @param tag Used to identify the source of a log message.  It usually identifies
     64      *        the class or activity where the log call occurs.
     65      * @param msg The message you would like logged.
     66      */
     67     public static int v(String tag, String msg) {
     68         return println(LOG_ID_MAIN, VERBOSE, tag, msg);
     69     }
     70 
     71     /**
     72      * Send a {@link #VERBOSE} log message and log the exception.
     73      * @param tag Used to identify the source of a log message.  It usually identifies
     74      *        the class or activity where the log call occurs.
     75      * @param msg The message you would like logged.
     76      * @param tr An exception to log
     77      */
     78     public static int v(String tag, String msg, Throwable tr) {
     79         return println(LOG_ID_MAIN, VERBOSE, tag, msg + '\n' + getStackTraceString(tr));
     80     }
     81 
     82     /**
     83      * Send a {@link #DEBUG} log message.
     84      * @param tag Used to identify the source of a log message.  It usually identifies
     85      *        the class or activity where the log call occurs.
     86      * @param msg The message you would like logged.
     87      */
     88     public static int d(String tag, String msg) {
     89         return println(LOG_ID_MAIN, DEBUG, tag, msg);
     90     }
     91 
     92     /**
     93      * Send a {@link #DEBUG} log message and log the exception.
     94      * @param tag Used to identify the source of a log message.  It usually identifies
     95      *        the class or activity where the log call occurs.
     96      * @param msg The message you would like logged.
     97      * @param tr An exception to log
     98      */
     99     public static int d(String tag, String msg, Throwable tr) {
    100         return println(LOG_ID_MAIN, DEBUG, tag, msg + '\n' + getStackTraceString(tr));
    101     }
    102 
    103     /**
    104      * Send an {@link #INFO} log message.
    105      * @param tag Used to identify the source of a log message.  It usually identifies
    106      *        the class or activity where the log call occurs.
    107      * @param msg The message you would like logged.
    108      */
    109     public static int i(String tag, String msg) {
    110         return println(LOG_ID_MAIN, INFO, tag, msg);
    111     }
    112 
    113     /**
    114      * Send a {@link #INFO} log message and log the exception.
    115      * @param tag Used to identify the source of a log message.  It usually identifies
    116      *        the class or activity where the log call occurs.
    117      * @param msg The message you would like logged.
    118      * @param tr An exception to log
    119      */
    120     public static int i(String tag, String msg, Throwable tr) {
    121         return println(LOG_ID_MAIN, INFO, tag, msg + '\n' + getStackTraceString(tr));
    122     }
    123 
    124     /**
    125      * Send a {@link #WARN} log message.
    126      * @param tag Used to identify the source of a log message.  It usually identifies
    127      *        the class or activity where the log call occurs.
    128      * @param msg The message you would like logged.
    129      */
    130     public static int w(String tag, String msg) {
    131         return println(LOG_ID_MAIN, WARN, tag, msg);
    132     }
    133 
    134     /**
    135      * Send a {@link #WARN} log message and log the exception.
    136      * @param tag Used to identify the source of a log message.  It usually identifies
    137      *        the class or activity where the log call occurs.
    138      * @param msg The message you would like logged.
    139      * @param tr An exception to log
    140      */
    141     public static int w(String tag, String msg, Throwable tr) {
    142         return println(LOG_ID_MAIN, WARN, tag, msg + '\n' + getStackTraceString(tr));
    143     }
    144 
    145     /*
    146      * Send a {@link #WARN} log message and log the exception.
    147      * @param tag Used to identify the source of a log message.  It usually identifies
    148      *        the class or activity where the log call occurs.
    149      * @param tr An exception to log
    150      */
    151     public static int w(String tag, Throwable tr) {
    152         return println(LOG_ID_MAIN, WARN, tag, getStackTraceString(tr));
    153     }
    154 
    155     /**
    156      * Send an {@link #ERROR} log message.
    157      * @param tag Used to identify the source of a log message.  It usually identifies
    158      *        the class or activity where the log call occurs.
    159      * @param msg The message you would like logged.
    160      */
    161     public static int e(String tag, String msg) {
    162         return println(LOG_ID_MAIN, ERROR, tag, msg);
    163     }
    164 
    165     /**
    166      * Send a {@link #ERROR} log message and log the exception.
    167      * @param tag Used to identify the source of a log message.  It usually identifies
    168      *        the class or activity where the log call occurs.
    169      * @param msg The message you would like logged.
    170      * @param tr An exception to log
    171      */
    172     public static int e(String tag, String msg, Throwable tr) {
    173         return println(LOG_ID_MAIN, ERROR, tag, msg + '\n' + getStackTraceString(tr));
    174     }
    175 
    176     /**
    177      * Handy function to get a loggable stack trace from a Throwable
    178      * @param tr An exception to log
    179      */
    180     public static String getStackTraceString(Throwable tr) {
    181         if (tr == null) {
    182             return "";
    183         }
    184 
    185         // This is to reduce the amount of log spew that apps do in the non-error
    186         // condition of the network being unavailable.
    187         Throwable t = tr;
    188         while (t != null) {
    189             if (t instanceof UnknownHostException) {
    190                 return "";
    191             }
    192             t = t.getCause();
    193         }
    194 
    195         StringWriter sw = new StringWriter();
    196         PrintWriter pw = new PrintWriter(sw);
    197         tr.printStackTrace(pw);
    198         pw.flush();
    199         return sw.toString();
    200     }
    201 
    202     /**
    203      * Low-level logging call.
    204      * @param priority The priority/type of this log message
    205      * @param tag Used to identify the source of a log message.  It usually identifies
    206      *        the class or activity where the log call occurs.
    207      * @param msg The message you would like logged.
    208      * @return The number of bytes written.
    209      */
    210     public static int println(int priority, String tag, String msg) {
    211         return println(LOG_ID_MAIN, priority, tag, msg);
    212     }
    213 
    214     /** @hide */ public static final int LOG_ID_MAIN = 0;
    215     /** @hide */ public static final int LOG_ID_RADIO = 1;
    216     /** @hide */ public static final int LOG_ID_EVENTS = 2;
    217     /** @hide */ public static final int LOG_ID_SYSTEM = 3;
    218     /** @hide */ public static final int LOG_ID_CRASH = 4;
    219 
    220     /** @hide */ @SuppressWarnings("unused")
    221     public static int println(int bufID,
    222             int priority, String tag, String msg) {
    223         return 0;
    224     }
    225 }
    226