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}