/* * Copyright (C) 2014 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 me.devsaki.hentoid.util; import android.util.Log; import me.devsaki.hentoid.BuildConfig; import me.devsaki.hentoid.HentoidApp; @SuppressWarnings("ALL") public class LogHelper { private static final String LOG_PREFIX = "Log: "; private static final int LOG_PREFIX_LENGTH = LOG_PREFIX.length(); private static final int MAX_LOG_TAG_LENGTH = 23; /** * Don't use this when obfuscating class names! */ public static String makeLogTag(Class cls) { final String className = cls.getSimpleName(); if (className.length() > MAX_LOG_TAG_LENGTH - LOG_PREFIX_LENGTH) { return LOG_PREFIX + className.substring(0, MAX_LOG_TAG_LENGTH - LOG_PREFIX_LENGTH - 1); } return LOG_PREFIX + className; } public static void v(String tag, Object... messages) { // Only log VERBOSE if build type is DEBUG if (BuildConfig.DEBUG) { log(tag, Log.VERBOSE, null, messages); } } public static void d(String tag, Object... messages) { // Only log DEBUG if build type is DEBUG if (BuildConfig.DEBUG) { log(tag, Log.DEBUG, null, messages); } } public static void i(String tag, Object... messages) { log(tag, Log.INFO, null, messages); } public static void w(String tag, Object... messages) { log(tag, Log.WARN, null, messages); } public static void w(String tag, Throwable t, Object... messages) { log(tag, Log.WARN, t, messages); } public static void e(String tag, Object... messages) { log(tag, Log.ERROR, null, messages); } public static void e(String tag, Throwable t, Object... messages) { log(tag, Log.ERROR, t, messages); } private static void log(String tag, int level, Throwable t, Object... messages) { String message; if (t == null && messages != null && messages.length == 1) { // handle this common case without the extra cost of creating a stringBuffer: message = messages[0].toString(); } else { StringBuilder sb = new StringBuilder(); if (messages != null) for (Object m : messages) { sb.append(m); } if (t != null) { sb.append("\n").append(Log.getStackTraceString(t)); // Exception Tracking HentoidApp.getInstance().trackException((Exception) t); } message = sb.toString(); } Log.println(level, tag, message); } }