/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.stetho.timber;
import android.util.Log;
import com.facebook.stetho.inspector.console.CLog;
import com.facebook.stetho.inspector.console.ConsolePeerManager;
import com.facebook.stetho.inspector.protocol.module.Console;
import timber.log.Timber;
/**
* Timber tree implementation which forwards logs to the Chrome Dev console.
* Plant it using {@link Timber#plant(Timber.Tree)}
* <pre>
* {@code
* Timber.plant(new StethoTree())
* }
* </pre>
*/
public class StethoTree extends Timber.Tree {
@Override
protected void log(int priority, String tag, String message, Throwable t) {
ConsolePeerManager peerManager = ConsolePeerManager.getInstanceOrNull();
if (peerManager == null) {
return;
}
Console.MessageLevel logLevel;
switch (priority) {
case Log.VERBOSE:
case Log.DEBUG:
logLevel = Console.MessageLevel.DEBUG;
break;
case Log.INFO:
logLevel = Console.MessageLevel.LOG;
break;
case Log.WARN:
logLevel = Console.MessageLevel.WARNING;
break;
case Log.ERROR:
case Log.ASSERT:
logLevel = Console.MessageLevel.ERROR;
break;
default:
logLevel = Console.MessageLevel.LOG;
}
CLog.writeToConsole(
logLevel,
Console.MessageSource.OTHER,
message
);
}
}