日志的规范管理,在项目中不容忽视,应用上线后将调试日志关闭也是十分必要的,下面就是一个好用的日志管理工具类(点击下载):

import java.util.Hashtable;import android.util.Log;/** * The class for print log * @author kesenhoo */
public class MyLogger
{  private final static boolean                logFlag         = true;  //调试模式 true  上线模式 falsepublic final static String                  tag             = "APPNAME";//日志打印  tagprivate final static int                    logLevel        = Log.VERBOSE; //日志级别//集合private static Hashtable<String, MyLogger>    sLoggerTable    = new Hashtable<String, MyLogger>();  private String                              mClassName;//不同开发人员的日志使用对象private static MyLogger                     slog;private static MyLogger                     jlog;private static MyLogger                     klog;//开发人员的名字private static final String                 SIMON           = "@simon@ ";private static final String                 JAMES           = "@james@ ";private static final String                 KESEN           = "@kesen@ ";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 one * @return */  public static MyLogger kLog()  {  if(klog == null)  {  klog = new MyLogger(KESEN);  }  return klog;  }  /** * Purpose:Mark user two * @return */  public static MyLogger jLog()  {  if(jlog == null)  {  jlog = new MyLogger(JAMES);  }  return jlog;  }/*** Purpose:Mark user three* @return*/public static MyLogger slog(){if(slog == null){slog = new MyLogger(SIMON);}return slog;}/** * 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  jnicontinue;  }  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 * @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: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 * @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 * @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 * @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 * @param ex */  public void e(Exception ex)  {  if(logFlag)  {  if(logLevel <= Log.ERROR)  {  Log.e(tag, "error", ex);  }  }  }  /** * The Log Level: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);  }  }
}  

使用示例:

         MyLogger log=MyLogger.slog();log.i("这是一个很好用的的日志工具类");

效果:

I/APPNAME: @simon@ [ main: Main_activity.java:52 onCreate ] - 这是一个很好用的的日志工具类

我的博客网站:http://huyuxin.top/欢迎大家访问!评论!

一个好用的日志管理工具类MyLogger相关推荐

  1. 三款日志管理工具横向对比:Splunk vs Sumo Logic vs Logstash

    在生产环境记录应用的运行日志已经成为惯例,但日志需要经过处理和分析才有意义,第三方日志管理工具的出现正旨在解决这个问题.软件分析公司Takipi负责产品市场的Josh Dreyfuss今日撰文,比较了 ...

  2. Java程序员须知的七个日志管理工具

    本文由 ImportNew - 赖 信涛 翻译自 takipiblog.欢迎加入翻译小组.转载请见文末要求. Splunk vs. Sumo Logic vs. LogStash vs. GrayLo ...

  3. 华为抓取错误日志在哪里_Java程序员须知的七个日志管理工具,提高排查错误效率...

    Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注 Splunk vs. Sumo Logic vs. LogStash vs. GrayLog vs. Loggly ...

  4. java rabbitmq 工具类_RabbitMq通用管理工具类

    import java.io.IOException; import java.util.concurrent.TimeoutException; import com.rabbitmq.client ...

  5. 一个node系统的日志管理

    已经很久没有学习了,趁需求不饱和,想通过学习组里的成熟的node系统,模仿搭建一个"健全"的node系统. 一般第一步肯定是怎么配置基础信息,让这个系统跑起来.可是...刚好我不会 ...

  6. 【笔记】最佳日志管理工具:51个有用的日志管理、监视、分析等工具

    最佳日志管理工具:51个有用的日志管理.监视.分析等工具 痛苦的纯文本日志管理日子一去不复返了.虽然纯文本数据在某些情况下仍然很有用,但是在进行扩展分析以收集有洞察力的基础设施数据并改进代码质量时,寻 ...

  7. Python日志管理工具:logging、logbook、Eliot、Raven和Sentry

    在实际接口自动化工作中,日志管理是一项至关重要的任务.本文介绍了Python中几个常用的日志管理工具:logging.logbook.Eliot.Raven和Sentry.我们将详细探讨它们的特点和用 ...

  8. 6个您需要了解的日志管理工具(以及如何使用它们)

    如果没有正确的工具来汇总和解析日志数据,则几乎不可能找到并了解您正在寻找的信息. 日志有无穷无尽的用途,因为日志本身是无止境的. 应用程序日志,安全日志,BI日志, 林肯日志 (好吧,也许不是)- 暂 ...

  9. mysql第三方工具binlog_mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)

    一.概述 由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具. mysqlbinlog的语法如下: mysqlbinlog ...

最新文章

  1. 如何入门生信Linux
  2. python sklearn 梯度下降法_(四)梯度下降法及其python实现
  3. ARM Linux 如何--注册和触发--软中断
  4. 计算机控制课程设计体会,计算机控制技术课程设计报告
  5. idea2020.2.2怎么创建web项目_创建Vue3.0的项目
  6. N进制的规范十进制表示(洛谷P2084题题解,Java语言描述)
  7. httpd的三种模式比较
  8. Linux-insmod/rmmod/lsmod驱动模块相关命令(10)
  9. mysql------explain工具
  10. ipad是买WiFi版的好,还是买4G版的好?
  11. 5.4(将英里转化位千米)
  12. linux设置开机自启动的方式总结
  13. iShot--Mac最强截图工具
  14. 网络云存储技术Windows server 2012 (项目十六 基于iSCSI传输的配置与管理)
  15. C语言多多搬果子思路,看图写话《小刺猬搬果子》
  16. php中alight是什么意思,进阶PHP需要注意的一些点
  17. filter-grok,dissect匹配数据
  18. 安装Office 2016出现 Office 16 Click-to-Run Extensibility Component
  19. VM16Pro安装win7
  20. 几款好用的微信开发ui库

热门文章

  1. 纯电SUV大家庭必备首选——奇瑞大蚂蚁
  2. 破壁机复合式刀片研发
  3. EXCEL之进销管理系统
  4. SMART-seq2 单细胞转录组分析workflow
  5. 教你一步一步在vim中配置史上最难安装的You Complete Me
  6. HTML5滚动效果设置
  7. 【prism】专属代码片段snippet
  8. Turtlebot4入门教程-演示-创建节点(Python)
  9. 运算放大器的基础原理
  10. vue+elementui导入、导出excel