package test;
public abstract class Logger {
private static Class<? extends Logger> mLoggerClass = null;
public static final boolean DBG = true;
public static final String TAG = null;
public static final String LINE = "------->"; private String mTag; public Logger() {
} public Logger(String tag) {
this.mTag = tag;
} public static void registerLogger(Class<? extends Logger> loggerClass) {
Logger.mLoggerClass = loggerClass;
} public static void unregisterLogger() {
Logger.mLoggerClass = null;
} public static Logger getLogger(String tag) {
tag = "[" + tag + "]";
Logger logger = null;
if (mLoggerClass != null) {
try {
logger = mLoggerClass.newInstance();
logger.mTag = tag;
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
if (logger == null) {
logger = new Log(tag);
}
return logger;
} public String getTag() {
return mTag;
} public void d(String tag, String str) {
debug(mTag + LINE + str);
} public void i(String tag, String str) {
info(mTag + LINE + str);
} public void w(String tag, String str) {
warn(mTag + LINE + str);
} public void e(String tag, String str) {
error(mTag + LINE + str);
} public void d(String tag, String str, Throwable tr) {
debug(mTag + LINE + str, tr);
} public void i(String tag, String str, Throwable tr) {
info(mTag + LINE + str, tr);
} public void w(String tag, String str, Throwable tr) {
warn(mTag + LINE + str, tr);
} public void e(String tag, String str, Throwable tr) {
error(mTag + LINE + str, tr);
} protected abstract void debug(String str); protected abstract void info(String str); protected abstract void warn(String str); protected abstract void error(String str); protected abstract void debug(String str, Throwable tr); protected abstract void info(String str, Throwable tr); protected abstract void warn(String str, Throwable tr); protected abstract void error(String str, Throwable tr);
}
package test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Date; import android.os.Environment; public class Log extends Logger { private static final String APP_TAG = "renwuto";
private static final String LOG_FILE_NAME = "renwuto.txt";
private static PrintStream logStream;
private static final String LOG_ENTRY_FORMAT = "[%tF %tT]%s"; public Log(String name) {
super(name);
} @Override
protected void debug(String str) {
android.util.Log.d(APP_TAG, str);
write(str, null);
} @Override
protected void error(String str) {
android.util.Log.e(APP_TAG, str);
write(str, null);
} @Override
protected void info(String str) {
android.util.Log.i(APP_TAG, str);
write(str, null);
} @Override
protected void warn(String str) {
android.util.Log.w(APP_TAG, str);
write(str, null);
} @Override
protected void debug(String str, Throwable tr) {
android.util.Log.d(APP_TAG, str);
write(str, tr);
} @Override
protected void error(String str, Throwable tr) {
android.util.Log.e(APP_TAG, str);
write(str, tr);
} @Override
protected void info(String str, Throwable tr) {
android.util.Log.i(APP_TAG, str);
write(str, tr);
} @Override
protected void warn(String str, Throwable tr) {
android.util.Log.w(APP_TAG, str);
write(str, tr);
} private void write(String msg, Throwable tr) {
if (!Log.DBG) {
return;
}
try { if (null == logStream) {
synchronized (Log.class) {
if (null == logStream) {
init();
}
}
} Date now = new Date();
if (null != logStream) {
logStream.printf(LOG_ENTRY_FORMAT, now, now, msg);
logStream.print("\n");
}
if (null != tr) {
tr.printStackTrace(logStream);
if (null != logStream) {
logStream.print("\n");
}
} } catch (Throwable t) {
// Empty catch block
}
} public static void init() {
if (!Log.DBG) {
return;
}
try {
File sdRoot = null;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
sdRoot = Environment.getExternalStorageDirectory();
}
if (sdRoot != null) {
File logFile = new File(sdRoot, LOG_FILE_NAME); android.util.Log.d(APP_TAG, "Log to file : " + logFile);
logStream = new PrintStream(new FileOutputStream(logFile, true), true);
}
} catch (Throwable e) {
// Empty catch block
}
} @Override
protected void finalize() throws Throwable {
try {
super.finalize();
if (logStream != null) {
logStream.close();
}
} catch (Throwable t) {
// Empty catch block
}
}
}

使用:

private static final Logger log = Logger.getLogger("DownloadThread");

log.e("xxxx", "=============network data end");

Android log 方法的更多相关文章

  1. 在非NDK编译条件下使用Android Log函数

    解决的需求 有些时候不能在NDK环境编译,或者使用NDK编译会颇费周折,然后又想使用Android系统自带的Log类方法,那么我们就可以使用dlopen来实现我们的目的.比如在OpenCV中添加And ...

  2. android JNI常用添加log方法

    android JNI 打log方法 添加库支持 LOCAL_LDLIBS :=-llog -landroid 包含头文件 #include <android/log.h> #define ...

  3. android log机制——输出log【转】

    转自:http://blog.csdn.net/tdstds/article/details/19084327 目录(?)[-] 在android Java code中输出log Logprintln ...

  4. android Log.isLoggable步骤的使用

    原文地址: http://www.cnblogs.com/maxinliang/p/4024442.html android Log.isLoggable方法的使用 android 动态控制logca ...

  5. android语音识别方法

    http://www.apkbus.com/forum.php?mod=viewthread&tid=3473 android语音识别方法一:使用intent调用语音识别程序 1. 说明 以下 ...

  6. 蓝牙ble数据转语音实现Android AudioRecord方法推荐

    蓝牙ble数据转语音实现Android AudioRecord方法推荐 教程  欢迎走进zozo的学习之旅. 概述 蓝牙BLE又称bluetooth smart,主打的是低功耗和快速链接,所以在支持的 ...

  7. 转:Android Log

    在调试代码的时候我们需要查看调试信息,那我们就需要用Android Log类. android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以 ...

  8. Android Stuido 方法参数 p0,p1

    Android Stuido 方法参数 p0,p1 参考文献 https://stackoverflow.com/questions/49219439/incorrect-variable-names ...

  9. java web 程序---内置对象application的log方法的使用

    application的主要方法里,有log方法,是日志文件里可以查看到信息的. 当老师写好代码后,他发现在tomact里的log目录下找不到信息,原因是:我们用myeclipse这个客户端软件,应该 ...

随机推荐

  1. dp方法论——由矩阵相乘问题学习dp解题思路

    前篇戳:dp入门——由分杆问题认识动态规划 导语 刷过一些算法题,就会十分珍惜“方法论”这种东西.Leetcode上只有题目.讨论和答案,没有方法论.往往答案看起来十分切中要害,但是从看题目到得到思路 ...

  2. 个人java框架 技术分析

    1.框架选型 spring-boot https://github.com/JeffLi1993/springboot-learning-example https://mp.weixin.qq.co ...

  3. python基础学习笔记(七)

    本章介绍如何将语句组织成函数,这样,可以告诉计算机如何做事. 下面编写一小段代码计算婓波那契数列(前两个数的和是第三个数) fibs = [0,1] # 定义一个列表,初始内容是0,1 for i i ...

  4. 四则运算C语言程序

    #include<stdio.h> #include<Windows.h> #include<time.h> void main() { int a, b, c, ...

  5. Install Kernel 3.10 on CentOS 6.5

    http://bicofino.io/2014/10/25/install-kernel-3-dot-10-on-centos-6-dot-5/ https://gree2.github.io/lin ...

  6. jeecg 主-附表生成代码例子

    jeecg 主-附表生成代码例子 - CSDN博客https://blog.csdn.net/u010411264/article/details/51243277 JEECG Online Codi ...

  7. Protobuf一例

    Developer Guide  |  Protocol Buffers  |  Google Developershttps://developers.google.com/protocol-buf ...

  8. eclipse html 打开方式

    1. HTML Editor是有HTML语法着色的模式(类似于Notepad++里的效果),适用于大的HTML,这样复制剪贴效率较高,且有语法高亮. 2.Web Page Editor图形设计模式,类 ...

  9. JavaScript 模拟 HashMap例子

    function map(){    var map = {}; // Map map = new HashMap();        var key = "key";    va ...

  10. C语言ODBC数据库操作

    今天我们来介绍一下C语言操作数据库的方法,这里我们使用的是ODBC方式.环境是WIN7+VC6.其他环境也差不多,具体情况具体分析. 首先是环境的配置以及数据源的添加.这里就不去解释了,相关资料网上有 ...