package io.nlopez.smartlocation.utils;
import android.util.Log;
/**
* Created by mrm on 20/12/14.
*/
public class LoggerFactory {
public static Logger buildLogger(boolean loggingEnabled) {
return loggingEnabled ? new Blabber() : new Sssht();
}
private static class Sssht implements Logger {
@Override
public void v(String message, Object... args) {
}
@Override
public void v(Throwable t, String message, Object... args) {
}
@Override
public void d(String message, Object... args) {
}
@Override
public void d(Throwable t, String message, Object... args) {
}
@Override
public void i(String message, Object... args) {
}
@Override
public void i(Throwable t, String message, Object... args) {
}
@Override
public void w(String message, Object... args) {
}
@Override
public void w(Throwable t, String message, Object... args) {
}
@Override
public void e(String message, Object... args) {
}
@Override
public void e(Throwable t, String message, Object... args) {
}
}
private static class Blabber implements Logger {
private String getTag() {
return new Exception().getStackTrace()[3].getMethodName();
}
private String formatMessage(String message, Object... args) {
return args.length == 0 ? message : String.format(message, args);
}
@Override
public void v(String message, Object... args) {
Log.v(getTag(), formatMessage(message, args));
}
@Override
public void v(Throwable t, String message, Object... args) {
Log.v(getTag(), formatMessage(message, args), t);
}
@Override
public void d(String message, Object... args) {
Log.d(getTag(), formatMessage(message, args));
}
@Override
public void d(Throwable t, String message, Object... args) {
Log.d(getTag(), formatMessage(message, args), t);
}
@Override
public void i(String message, Object... args) {
Log.i(getTag(), formatMessage(message, args));
}
@Override
public void i(Throwable t, String message, Object... args) {
Log.i(getTag(), formatMessage(message, args), t);
}
@Override
public void w(String message, Object... args) {
Log.w(getTag(), formatMessage(message, args));
}
@Override
public void w(Throwable t, String message, Object... args) {
Log.w(getTag(), formatMessage(message, args), t);
}
@Override
public void e(String message, Object... args) {
Log.e(getTag(), formatMessage(message, args));
}
@Override
public void e(Throwable t, String message, Object... args) {
Log.e(getTag(), formatMessage(message, args), t);
}
}
}