| /* |
| * Copyright (C) 2020 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.android.deskclock |
| |
| import android.os.Build |
| import android.util.Log |
| |
| object LogUtils { |
| /** Default logger used for generic logging, i.e TAG. when a specific log tag isn't specified.*/ |
| private val DEFAULT_LOGGER = Logger("AlarmClock") |
| |
| @JvmStatic |
| fun v(message: String, vararg args: Any?) { |
| DEFAULT_LOGGER.v(message, *args) |
| } |
| |
| @JvmStatic |
| fun d(message: String, vararg args: Any?) { |
| DEFAULT_LOGGER.d(message, *args) |
| } |
| |
| @JvmStatic |
| fun i(message: String, vararg args: Any?) { |
| DEFAULT_LOGGER.i(message, *args) |
| } |
| |
| @JvmStatic |
| fun w(message: String, vararg args: Any?) { |
| DEFAULT_LOGGER.w(message, *args) |
| } |
| |
| fun e(message: String, vararg args: Any?) { |
| DEFAULT_LOGGER.e(message, *args) |
| } |
| |
| @JvmStatic |
| fun e(message: String, e: Throwable) { |
| DEFAULT_LOGGER.e(message, e) |
| } |
| |
| fun wtf(message: String, vararg args: Any?) { |
| DEFAULT_LOGGER.wtf(message, *args) |
| } |
| |
| @JvmStatic |
| fun wtf(e: Throwable) { |
| DEFAULT_LOGGER.wtf(e) |
| } |
| |
| class Logger(val logTag: String) { |
| val isVerboseLoggable: Boolean |
| get() = DEBUG || Log.isLoggable(logTag, Log.VERBOSE) |
| |
| val isDebugLoggable: Boolean |
| get() = DEBUG || Log.isLoggable(logTag, Log.DEBUG) |
| |
| val isInfoLoggable: Boolean |
| get() = DEBUG || Log.isLoggable(logTag, Log.INFO) |
| |
| val isWarnLoggable: Boolean |
| get() = DEBUG || Log.isLoggable(logTag, Log.WARN) |
| |
| val isErrorLoggable: Boolean |
| get() = DEBUG || Log.isLoggable(logTag, Log.ERROR) |
| |
| val isWtfLoggable: Boolean |
| get() = DEBUG || Log.isLoggable(logTag, Log.ASSERT) |
| |
| fun v(message: String, vararg args: Any?) { |
| if (isVerboseLoggable) { |
| Log.v(logTag, if (args.isEmpty() || args[0] == null) { |
| message |
| } else { |
| String.format(message, *args) |
| }) |
| } |
| } |
| |
| fun d(message: String, vararg args: Any?) { |
| if (isDebugLoggable) { |
| Log.d(logTag, if (args.isEmpty() || args[0] == null) { |
| message |
| } else { |
| String.format(message, *args) |
| }) |
| } |
| } |
| |
| fun i(message: String, vararg args: Any?) { |
| if (isInfoLoggable) { |
| Log.i(logTag, if (args.isEmpty() || args[0] == null) { |
| message |
| } else { |
| String.format(message, *args) |
| }) |
| } |
| } |
| |
| fun w(message: String, vararg args: Any?) { |
| if (isWarnLoggable) { |
| Log.w(logTag, if (args.isEmpty() || args[0] == null) { |
| message |
| } else { |
| String.format(message, *args) |
| }) |
| } |
| } |
| |
| fun e(message: String, vararg args: Any?) { |
| if (isErrorLoggable) { |
| Log.e(logTag, if (args.isEmpty() || args[0] == null) { |
| message |
| } else { |
| String.format(message, *args) |
| }) |
| } |
| } |
| |
| fun e(message: String, e: Throwable) { |
| if (isErrorLoggable) { |
| Log.e(logTag, message, e) |
| } |
| } |
| |
| fun wtf(message: String, vararg args: Any?) { |
| if (isWtfLoggable) { |
| Log.wtf(logTag, if (args.isEmpty() || args[0] == null) { |
| message |
| } else { |
| String.format(message, *args) |
| }) |
| } |
| } |
| |
| fun wtf(e: Throwable) { |
| if (isWtfLoggable) { |
| Log.wtf(logTag, e) |
| } |
| } |
| |
| companion object { |
| /** Log everything for debug builds or if running on a dev device. */ |
| val DEBUG = (BuildConfig.DEBUG || "eng" == Build.TYPE || "userdebug" == Build.TYPE) |
| } |
| } |
| } |