package com.kxd.utils;

import java.util.Hashtable;

import android.util.Log;

/**
* The class for print log
*
*/
public class MyLogger {
private final static boolean logFlag = true; // 调试模式 true 上线模式 false public final static String tag = "远程银行";// 日志打印 tag
private final static int logLevel = Log.VERBOSE; // 日志级别
// 集合
private static Hashtable<String, MyLogger> sLoggerTable = new Hashtable<String, MyLogger>();
private String mClassName; // 不同开发人员的日志使用对象
private static MyLogger djyLog; // 开发人员的名字
private static final String DJY = "djy"; private MyLogger(String name) {
mClassName = name;
} /**
*
* @param className
* @return
*/
@SuppressWarnings("unused")
private static MyLogger getLogger(String className) {
MyLogger classLogger = (MyLogger) sLoggerTable.get(className);
if (classLogger == null) {
classLogger = new MyLogger(className);
sLoggerTable.put(className, classLogger);
}
return classLogger;
} /**
* Purpose:Mark user djy
*
* @return
*/
public static MyLogger getDJYLog() {
if (djyLog == null) {
djyLog = new MyLogger(DJY);
}
return djyLog;
} /**
* Get The Current Function Name
*
* @return
*/
private String getFunctionName() {
StackTraceElement[] sts = Thread.currentThread().getStackTrace();
if (sts == null) {
return null;
}
for (StackTraceElement st : sts) {
if (st.isNativeMethod()) {
// 本地方法native jni
continue;
}
if (st.getClassName().equals(Thread.class.getName())) {
// 线程
continue;
}
if (st.getClassName().equals(this.getClass().getName())) {
// 构造方法
continue;
}
return mClassName + " [ 线程:" + Thread.currentThread().getName()
+ " - 文件名: " + st.getFileName() + " - 行数:"
+ st.getLineNumber() + " - 方法名:" + st.getMethodName()
+ " ]";
}
return null;
} /**
* The Log Level:i
*
* log等级:i
*
* @param str
*/
public void i(Object str) {
if (logFlag) {
if (logLevel <= Log.INFO) {
String name = getFunctionName();
if (name != null) {
Log.i(tag, name + " - " + str);
} else {
Log.i(tag, str.toString());
}
}
} } /**
* The Log Level:i
*
* log等级:i
*
* @param str
*/
public void i(String tag, Object str) {
if (logFlag) {
if (logLevel <= Log.INFO) {
String name = getFunctionName();
if (name != null) {
Log.i(tag, name + " - " + str);
} else {
Log.i(tag, str.toString());
}
}
} } /**
* The Log Level:d
*
* log等级:d
*
* @param str
*/
public void d(Object str) {
if (logFlag) {
if (logLevel <= Log.DEBUG) {
String name = getFunctionName();
if (name != null) {
Log.d(tag, name + " - " + str);
} else {
Log.d(tag, str.toString());
}
}
}
} /**
* The Log Level:V
*
* log等级:v
*
* @param str
*/
public void v(Object str) {
if (logFlag) {
if (logLevel <= Log.VERBOSE) {
String name = getFunctionName();
if (name != null) {
Log.v(tag, name + " - " + str);
} else {
Log.v(tag, str.toString());
}
}
}
} /**
* The Log Level:w
*
* log等级:w
*
* @param str
*/
public void w(Object str) {
if (logFlag) {
if (logLevel <= Log.WARN) {
String name = getFunctionName();
if (name != null) {
Log.w(tag, name + " - " + str);
} else {
Log.w(tag, str.toString());
}
}
}
} /**
* The Log Level:e
*
* log等级:e
*
* @param str
*/
public void e(Object str) {
if (logFlag) {
if (logLevel <= Log.ERROR) {
String name = getFunctionName();
if (name != null) {
Log.e(tag, name + " - " + str);
} else {
Log.e(tag, str.toString());
}
}
}
} /**
* The Log Level:e
*
* log等级:e
*
* @param ex
*/
public void e(Exception ex) {
if (logFlag) {
if (logLevel <= Log.ERROR) {
Log.e(tag, "error", ex);
}
}
} /**
* The Log Level:e
*
* log等级:e
*
* @param log
* @param tr
*/
public void e(String log, Throwable tr) {
if (logFlag) {
String line = getFunctionName();
Log.e(tag, "{Thread:" + Thread.currentThread().getName() + "}"
+ "[" + mClassName + line + ":] " + log + "\n", tr);
}
}
}

log日志应用 自定义的log的更多相关文章

  1. Android关于log日志,华为不输出log.v,log.d(zz)

    [java] view plain copy 我用的是mate8,本来虚拟机测试一点日志一点问题没有 [java] view plain copy 但是真机测试发现log.d一直不输出,正好又试了lo ...

  2. Spring Boot Log 日志使用教程

    我们编写任何 Spring Boot 程序,可能绕不开的就是 log 日志框架(组件). 在大多数程序员眼中日志是用来定位问题的.这很重要. 本项目源码下载 注意本项目提供的源码已在后期重新编写,有部 ...

  3. golang log日志

    写入日志文件 func main() { file, err := os.Create("test.log") if err != nil { log.Fatalln(" ...

  4. scrapy框架之log日志

    scrapy中的debug信息 在scrapy中设置log 1.在settings中设置log级别,在settings.py中添加一行: Scrapy提供5层logging级别: CRITICAL - ...

  5. JFinal - Log 日志

    今天偶然发现 JFinal 的 Log 简单小巧.上代码. JFinal 在初始化的时候有初始化 Log. class Config { // ... static void configJFinal ...

  6. java中关于log日志

    博:http://zhw2527.iteye.com/blog/1006302 http://zhw2527.iteye.com/blog/1099658 在项目开发中,记录错误日志是一个很有必要功能 ...

  7. 转 -Filebeat + Redis 管理 LOG日志实践

    Filebeat + Redis 管理 LOG日志实践 小赵营 关注 2019.01.06 17:52* 字数 1648 阅读 24评论 0喜欢 2 引用 转载 请注明出处 某早上,领导怒吼声远远传来 ...

  8. C/C++log日志库比较

    事实上,在C的世界里面没有特别好的日志函数库(就像Java里面的的log4j,或者C++的log4cxx).C程序员都喜欢用自己的轮子.printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者 ...

  9. Log 日志工具类 保存到文件 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. Tyvj1052(树形DP)

    P1052 没有上司的舞会 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以 ...

  2. springboot开启远程调试

    远程调试maven设置 The run goal forks a process for the boot application. It is possible to specify jvm arg ...

  3. 如何正确遍历删除List中的元素,你会吗?

    遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题.下面主要看看以下几种遍历删除List中元素的形式: 1.通过增强的for循环删除符合条件的多个元素 2.通过增强的for循环删除符合 ...

  4. java 随机颜色

    用HSV模型来实现颜色的随机,然后转为RGB模型 色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色.黄色等. 饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值. ...

  5. MPTCP in Wireshark(转)

    最新的wireshark可以直接识别出mptcp. Wireshark is a widely used network analyzer that can capture network traff ...

  6. 【Hadoop】HDFS笔记(三):HDFS的Shell操作

    HDFS处理文件的命令和Linux命令差不多,但注意区分大小写. (Linux区分大小写,Windows不区分大小写) 一.fs命令 键入命令"./bin/hadoop fs"将输 ...

  7. Uploadify API在项目上的应用

    在项目开发中,前端使用easyui,jq的时候,我么涉及到导入的时候都要用到这个上传插件,用法是: 1:先初始化上传控件 2:打开导入的easyui dialog弹出框,dialog里面将上传的inp ...

  8. TP5之数据库备份

    1.效果图 2.下载扩展类(  \extands\org\Baksql.php) 3.在  \public\static  里新建一个data 文件夹用来存放 .sql  的文件 4.使用方法 con ...

  9. JQuery onload、ready 加载顺序

    // ready 这个方法只是在页面所有的DOM加载完毕后就会触发 // 方式1 $(function(){ // do something }); // 方式2 $(document).ready( ...

  10. 强大的在线web编辑器UEditor

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. UEditor在线演示地址:http://u ...