code: public static void log(
        Object source, int priority, Throwable throwable, String format, Object... args) {
      if (priority < sLogLevel) {
        return;
      }
  
      final String sourceClass;
  
      if (source == null) {
        sourceClass = TAG;
      } else if (source instanceof Class<?>) {
        sourceClass = ((Class<?>) source).getSimpleName();
      } else {
        sourceClass = source.getClass().getSimpleName();
      }
  
      try {
        String message = String.format(format, args);
        if (throwable == null) {
          Log.println(priority, sourceClass, message);
        } else {
          Log.println(
              priority,
              sourceClass,
              String.format("%s\n%s", message, Log.getStackTraceString(throwable)));
        }
      } catch (IllegalFormatException e) {
        Log.e(TAG, "Bad formatting string: \"" + format + "\"", e);
      }
    }
docs: Logs a formatted string to the console using the source object's name as the log tag. If the
  source object is null, the default tag (see {@link LogUtils#TAG}) is used.
  
  <p>Example usage: <br>
  <code>
  LogUtils.log(this, Log.ERROR, "Invalid value: %d", value);
  </code>
  
  @param source The object that generated the log event.
  @param priority The log entry priority, see {@link Log#println(int, String, String)}.
  @param throwable A {@link Throwable} containing system state information to log
  @param format A format string, see {@link String#format(String, Object...)}.
  @param args String formatter arguments.