LogUtils.java revision cf755e813f96142c194db638b46bf73fed81c92e
1cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen/* 2310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen * Copyright (C) 2016 The Android Open Source Project 3cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * 4cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * Licensed under the Apache License, Version 2.0 (the "License"); 5cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * you may not use this file except in compliance with the License. 6cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * You may obtain a copy of the License at 7cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * 8cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * http://www.apache.org/licenses/LICENSE-2.0 9cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * 10cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * Unless required by applicable law or agreed to in writing, software 11cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * distributed under the License is distributed on an "AS IS" BASIS, 12cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * See the License for the specific language governing permissions and 14cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen * limitations under the License. 15cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen */ 16cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 17cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassenpackage com.android.deskclock; 18cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 19cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassenimport android.os.Build; 20cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassenimport android.util.Log; 21cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 22cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassenpublic class LogUtils { 23cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 24310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen /** 25310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen * Default logger used for generic logging, i.eTAG. when a specific log tag isn't specified. 26310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen */ 27310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen private final static Logger DEFAULT_LOGGER = new Logger("AlarmClock"); 28cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 29cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen public static void v(String message, Object... args) { 30310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen DEFAULT_LOGGER.v(message, args); 31cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 32cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 33310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public static void d(String message, Object... args) { 34310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen DEFAULT_LOGGER.d(message, args); 35cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 36cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 37310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public static void i(String message, Object... args) { 38310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen DEFAULT_LOGGER.i(message, args); 39cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 40cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 41310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public static void w(String message, Object... args) { 42310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen DEFAULT_LOGGER.w(message, args); 43cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 44cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 45310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public static void e(String message, Object... args) { 46310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen DEFAULT_LOGGER.e(message, args); 47cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 48cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 49310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public static void e(String message, Throwable e) { 50310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen DEFAULT_LOGGER.e(message, e); 51cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 52cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 53310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public static void wtf(String message, Object... args) { 54310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen DEFAULT_LOGGER.wtf(message, args); 55cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 56cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 57cf755e813f96142c194db638b46bf73fed81c92eSean Stout public static void wtf(Throwable e) { 58cf755e813f96142c194db638b46bf73fed81c92eSean Stout DEFAULT_LOGGER.wtf(e); 59cf755e813f96142c194db638b46bf73fed81c92eSean Stout } 60cf755e813f96142c194db638b46bf73fed81c92eSean Stout 61310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public final static class Logger { 62310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen 63310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen /** 64310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen * Log everything for debug builds or if running on a dev device. 65310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen */ 66310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public final static boolean DEBUG = BuildConfig.DEBUG 67310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen || "eng".equals(Build.TYPE) 68310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen || "userdebug".equals(Build.TYPE); 69310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen 70310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public final String logTag; 71310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen 72310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public Logger(String logTag) { 73310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen this.logTag = logTag; 74cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 75cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 761415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux public boolean isVerboseLoggable() { return DEBUG || Log.isLoggable(logTag, Log.VERBOSE); } 771415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux public boolean isDebugLoggable() { return DEBUG || Log.isLoggable(logTag, Log.DEBUG); } 781415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux public boolean isInfoLoggable() { return DEBUG || Log.isLoggable(logTag, Log.INFO); } 791415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux public boolean isWarnLoggable() { return DEBUG || Log.isLoggable(logTag, Log.WARN); } 801415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux public boolean isErrorLoggable() { return DEBUG || Log.isLoggable(logTag, Log.ERROR); } 811415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux public boolean isWtfLoggable() { return DEBUG || Log.isLoggable(logTag, Log.ASSERT); } 821415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux 83310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public void v(String message, Object... args) { 841415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux if (isVerboseLoggable()) { 85310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen Log.v(logTag, args == null || args.length == 0 86310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen ? message : String.format(message, args)); 87310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen } 88cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 89cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 90310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public void d(String message, Object... args) { 911415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux if (isDebugLoggable()) { 92310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen Log.d(logTag, args == null || args.length == 0 ? message 93310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen : String.format(message, args)); 94310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen } 95cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 96cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 97310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public void i(String message, Object... args) { 981415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux if (isInfoLoggable()) { 99310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen Log.i(logTag, args == null || args.length == 0 ? message 100310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen : String.format(message, args)); 101310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen } 102cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 103cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 104310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public void w(String message, Object... args) { 1051415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux if (isWarnLoggable()) { 106310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen Log.w(logTag, args == null || args.length == 0 ? message 107310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen : String.format(message, args)); 108310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen } 109cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 110cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 111310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public void e(String message, Object... args) { 1121415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux if (isErrorLoggable()) { 113310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen Log.e(logTag, args == null || args.length == 0 ? message 114310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen : String.format(message, args)); 115310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen } 116310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen } 117310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen 118310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public void e(String message, Throwable e) { 1191415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux if (isErrorLoggable()) { 120310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen Log.e(logTag, message, e); 121310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen } 122cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 123cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen 124310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen public void wtf(String message, Object... args) { 1251415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux if (isWtfLoggable()) { 126310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen Log.wtf(logTag, args == null || args.length == 0 ? message 127310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen : String.format(message, args)); 128310210dab3e97b1defe0870ecbc25b1451e90392Justin Klaassen } 129cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 130cf755e813f96142c194db638b46bf73fed81c92eSean Stout 131cf755e813f96142c194db638b46bf73fed81c92eSean Stout public void wtf(Throwable e) { 132cf755e813f96142c194db638b46bf73fed81c92eSean Stout if (isWtfLoggable()) { 133cf755e813f96142c194db638b46bf73fed81c92eSean Stout Log.wtf(logTag, e); 134cf755e813f96142c194db638b46bf73fed81c92eSean Stout } 135cf755e813f96142c194db638b46bf73fed81c92eSean Stout } 136cdbb71b08c13c84af850f4036febc0b90dcfcc7dJustin Klaassen } 1371415d4cd56f67b4a7a0aca254a698c65c5eecffdJames Lemieux}