Please note that the contents of this offline web site may be out of date. To access the most recent documentation visit the online version .
Note that links that point to online resources are green in color and will open in a new window.
We would love it if you could give us feedback about this material by filling this form (You have to be online to fill it)
RepeatingAlarm / src / com.example.android.common / logger /

LogWrapper.java

      
        1
       
        2
       
        3
       
        4
       
        5
       
        6
       
        7
       
        8
       
        9
       
        10
       
        11
       
        12
       
        13
       
        14
       
        15
       
        16
       
        17
       
        18
       
        19
       
        20
       
        21
       
        22
       
        23
       
        24
       
        25
       
        26
       
        27
       
        28
       
        29
       
        30
       
        31
       
        32
       
        33
       
        34
       
        35
       
        36
       
        37
       
        38
       
        39
       
        40
       
        41
       
        42
       
        43
       
        44
       
        45
       
        46
       
        47
       
        48
       
        49
       
        50
       
        51
       
        52
       
        53
       
        54
       
        55
       
        56
       
        57
       
        58
       
        59
       
        60
       
        61
       
        62
       
        63
       
        64
       
        65
       
        66
       
        67
       
        68
       
        69
       
        70
       
        71
       
        72
       
        73
       
        74
       
        75
       
       
       

       
/*
       

       
       

        * Copyright (C) 2012 The Android Open Source Project
       

       
       

        *
       

       
       

        * Licensed under the Apache License, Version 2.0 (the "License");
       

       
       

        * you may not use this file except in compliance with the License.
       

       
       

        * You may obtain a copy of the License at
       

       
       

        *
       

       
       

        *      http://www.apache.org/licenses/LICENSE-2.0
       

       
       

        *
       

       
       

        * Unless required by applicable law or agreed to in writing, software
       

       
       

        * distributed under the License is distributed on an "AS IS" BASIS,
       

       
       

        * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       

       
       

        * See the License for the specific language governing permissions and
       

       
       

        * limitations under the License.
       

       
       

        */

       

       
       

       
package com.example.android.common.logger;
       

       
       

       

       
       

       
import android.util.Log;
       

       
       

       

       
       

       
/**
       

       
       

        * Helper class which wraps Android's native Log utility in the Logger interface.  This way
       

       
       

        * normal DDMS output can be one of the many targets receiving and outputting logs simultaneously.
       

       
       

        */

       

       
       

       
public class LogWrapper implements LogNode {
       

       
       

       

       
       

       
// For piping:  The next node to receive Log data after this one has done its work.
       

       
       

       
private LogNode mNext;
       

       
       

       

       
       

       
/**
       

       
       

        * Returns the next LogNode in the linked list.
       

       
       

        */

       

       
       

       
public LogNode getNext() {
       

       
       

       
return mNext;
       

       
       

       
}
       

       
       

       

       
       

       
/**
       

       
       

        * Sets the LogNode data will be sent to..
       

       
       

        */

       

       
       

       
public void setNext(LogNode node) {
       

       
       

        mNext
= node;
       

       
       

       
}
       

       
       

       

       
       

       
/**
       

       
       

        * Prints data out to the console using Android's native log mechanism.
       

       
       

        * @param priority Log level of the data being logged.  Verbose, Error, etc.
       

       
       

        * @param tag Tag for for the log data.  Can be used to organize log statements.
       

       
       

        * @param msg The actual message to be logged. The actual message to be logged.
       

       
       

        * @param tr If an exception was thrown, this can be sent along for the logging facilities
       

       
       

        *           to extract and print useful information.
       

       
       

        */

       

       
       

       
@Override
       

       
       

       
public void println(int priority, String tag, String msg, Throwable tr) {
       

       
       

       
// There actually are log methods that don't take a msg parameter.  For now,
       

       
       

       
// if that's the case, just convert null to the empty string and move on.
       

       
       

       
String useMsg = msg;
       

       
       

       
if (useMsg == null) {
       

       
       

        useMsg
= "";
       

       
       

       
}
       

       
       

       

       
       

       
// If an exeption was provided, convert that exception to a usable string and attach
       

       
       

       
// it to the end of the msg method.
       

       
       

       
if (tr != null) {
       

       
       

        msg
+= "\n" + Log.getStackTraceString(tr);
       

       
       

       
}
       

       
       

       

       
       

       
// This is functionally identical to Log.x(tag, useMsg);
       

       
       

       
// For instance, if priority were Log.VERBOSE, this would be the same as Log.v(tag, useMsg)
       

       
       

       
Log.println(priority, tag, useMsg);
       

       
       

       

       
       

       
// If this isn't the last node in the chain, move things along.
       

       
       

       
if (mNext != null) {
       

       
       

        mNext
.println(priority, tag, msg, tr);
       

       
       

       
}
       

       
       

       
}
       

       
       

       
}