Skip to content

Instantly share code, notes, and snippets.

@kimukou
Last active December 22, 2015 03:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kimukou/6410244 to your computer and use it in GitHub Desktop.
Save kimukou/6410244 to your computer and use it in GitHub Desktop.
//ref https://gist.github.com/3595115
//
// privious https://gist.github.com/kimukou/3598821
import com.nihon0tc.ad.BuildConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.helpers.MessageFormatter;
public class LogUtil {
public static void debug(String tag,Object msg)
{
if(!isDebugEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.debug(String.valueOf(msg));
}
public static void debug(String tag,String format,Object... arguments)
{
if(!isDebugEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.debug(format,arguments);
}
public static void info(String tag,Object msg)
{
if(!isInfoEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.info(String.valueOf(msg));
}
public static void info(String tag,String format,Object... arguments)
{
if(!isInfoEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.info(format,arguments);
}
public static void warn(String tag,Object msg)
{
if(!isWarnEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.warn(String.valueOf(msg));
}
public static void warn(String tag,String format,Object... arguments)
{
if(!isWarnEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.warn(format,arguments);
}
public static void error(String tag,Object msg)
{
if(!isErrorEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.error(String.valueOf(msg));
}
public static void error(String tag,String format,Object... arguments)
{
if(!isErrorEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.error(format,arguments);
}
public static void error(String tag,Object msg,Exception ex)
{
if(!isErrorEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.error(String.valueOf(msg),ex);
}
public static void error(String tag,Exception ex,String format,Object... arguments)
{
if(!isErrorEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.error(format_slf4j(format,arguments),ex);
}
public static void error(String tag,Object msg,Throwable ex)
{
if(!isErrorEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.error(String.valueOf(msg),ex);
}
public static void error(String tag,Throwable ex,String format,Object... arguments)
{
if(!isErrorEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.error(format_slf4j(format,arguments),ex);
}
public static void trace(String tag,Object msg)
{
if(!isTraceEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.trace(String.valueOf(msg));
}
public static void trace(String tag,String format,Object... arguments)
{
if(!isTraceEnabled(tag))return;
Logger logger = LoggerFactory.getLogger(tag);
logger.trace(format,arguments);
}
//see http://d.hatena.ne.jp/Kazzz/20100921/p2
// apk実行時はINFOで必ず起動するので
// BuildConfig.DEBUG時は常にtrueにした方がデバックしやすい
public static boolean isDebugEnabled(String tag)
{
if(BuildConfig.DEBUG)return true;
Logger logger = LoggerFactory.getLogger(tag);
return logger==null ? false:logger.isDebugEnabled();
}
public static boolean isInfoEnabled(String tag)
{
if(BuildConfig.DEBUG)return true;
Logger logger = LoggerFactory.getLogger(tag);
return logger==null ? false:logger.isInfoEnabled();
}
public static boolean isWarnEnabled(String tag)
{
if(BuildConfig.DEBUG)return true;
Logger logger = LoggerFactory.getLogger(tag);
return logger==null ? false:logger.isWarnEnabled();
}
public static boolean isErrorEnabled(String tag)
{
if(BuildConfig.DEBUG)return true;
Logger logger = LoggerFactory.getLogger(tag);
return logger==null ? false:logger.isErrorEnabled();
}
public static boolean isTraceEnabled(String tag)
{
if(BuildConfig.DEBUG)return true;
Logger logger = LoggerFactory.getLogger(tag);
return logger==null ? false:logger.isDebugEnabled();
}
//see https://gist.github.com/3637574#file_debug_log.java
public static void debug(Object msg)
{
String tag = getClassName();
Logger logger = LoggerFactory.getLogger(tag);
if(!logger.isDebugEnabled())return;
logger.debug("{}{}{}",new Object[]{msg,getPadding(msg),getAdditionalLog()});
}
public static void info(Object msg)
{
String tag = getClassName();
Logger logger = LoggerFactory.getLogger(tag);
if(!logger.isInfoEnabled())return;
logger.info("{}{}{}",new Object[]{msg,getPadding(msg),getAdditionalLog()});
}
public static void warn(Object msg)
{
String tag = getClassName();
Logger logger = LoggerFactory.getLogger(tag);
if(!logger.isWarnEnabled())return;
logger.warn("{}{}{}",new Object[]{msg,getPadding(msg),getAdditionalLog()});
}
public static void error(Object msg)
{
String tag = getClassName();
Logger logger = LoggerFactory.getLogger(tag);
if(!logger.isErrorEnabled())return;
logger.error("{}{}{}",new Object[]{msg,getPadding(msg),getAdditionalLog()});
}
public static void error(Object msg,Exception ex)
{
String tag = getClassName();
Logger logger = LoggerFactory.getLogger(tag);
if(!logger.isErrorEnabled())return;
logger.error("{}{}{}",new Object[]{msg,getPadding(msg),getAdditionalLog()},ex);
}
public static void error(Object msg,Throwable ex)
{
String tag = getClassName();
Logger logger = LoggerFactory.getLogger(tag);
if(!logger.isErrorEnabled())return;
logger.error("{}{}{}",new Object[]{msg,getPadding(msg),getAdditionalLog()},ex);
}
public static void trace(Object msg)
{
String tag = getClassName();
Logger logger = LoggerFactory.getLogger(tag);
if(!logger.isTraceEnabled())return;
logger.trace("{}{}{}",new Object[]{msg,getPadding(msg),getAdditionalLog()});
}
private static String getClassName() {
String fn = "";
try {
StackTraceElement elm = new Throwable().getStackTrace()[INDEX];
fn = getClassName(elm);
} catch (Exception e) {}
return fn;
}
private static final int MAX_TAB_COUNT = 8;
private static final int TAB_SIZE = 4;
private static final int INDEX = 3;
private static String getPadding(Object message) {
String padding = "";
int tabCount = MAX_TAB_COUNT - (String.valueOf(message).length() / TAB_SIZE);
if (tabCount <= 0) {
return "\t";
}
for (int i = 0; i < tabCount; i++) {
padding += "\t";
}
return padding;
}
private static String getAdditionalLog() {
StackTraceElement elm = null;
try {
elm = new Throwable().getStackTrace()[INDEX];
}
catch(Exception ex){ return ""; }
String additionalLog = new StringBuilder(" at ").append(getClassName(elm)).append("#").append(getMethodName(elm))
.append("(").append(getFileName(elm)).append(":").append(getLineNumber(elm)).append(")").toString();
return additionalLog;
}
private static String getClassName(StackTraceElement elm) {
String className = elm.getClassName();
className = className.substring(className.lastIndexOf(".") + 1);
return className;
}
private static String getMethodName(StackTraceElement elm) {
return elm.getMethodName();
}
private static String getFileName(StackTraceElement elm) {
return elm.getFileName();
}
private static String getLineNumber(StackTraceElement elm) {
return String.valueOf(elm.getLineNumber());
}
//copy from org.slf4j.impl.AndroidLogger
// private String format(final String format, final Object[] args)
//
private static String format_slf4j(final String format, final Object[] args)
{
return MessageFormatter.arrayFormat(format, args).getMessage();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment