import android.util.Log;/*** 日志控制*/
public class LogUtils {private final static String TAG = "Log_";private final static boolean sOpenLog = true;public static void d(String logKey, String msg) {d(logKey, msg, 2);}/**** @param logKey* @param msg* @param stackIndex 1:当前位置,2:上级栈位置,0:logcat 的位置(没有意义)*/public static void d(String logKey, String msg, int stackIndex) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[stackIndex];String log = build(msg, ste);
//            Log.d(logKey, log);Log.d(TAG, "[" + logKey + "]" + log);}}public static void d(String msg) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(msg, ste);Log.d(TAG, log);}}public static void i(String logKey, String msg, int stackIndex) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[stackIndex];String log = build(msg, ste);Log.i(TAG, "[" + logKey + "]" + log);
//            Log.i(logKey, log);}}public static void i(String logKey, String msg) {i(logKey, msg, 2);}public static void v(String logKey, String msg, int stackIndex) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[stackIndex];String log = build(msg, ste);Log.v(TAG, "[" + logKey + "]" + log);}}public static void v(String logKey, String msg) {v(logKey, msg, 2);}public static void w(String logKey, String msg) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(logKey, msg, ste);Log.w(TAG, "[" + logKey + "]" + log);}}/*** 打印error级别的log** @param tag tag标签*/public static void e(String tag, Throwable tr) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(tag, "", ste, tr);Log.e(tag, log, tr);
//            Log.e(tag, "[" + Thread.currentThread().getId() + "]" + tr.getMessage(), tr);}}public static void e(String logKey, String msg) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(logKey, msg, ste);Log.e(logKey, log);}}public static void e(String logKey, String msg, Throwable e) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(logKey, msg, ste);Log.e(TAG, log, e);}}/*** 打印调用栈信息** @param tag tag标签* @param str 内容*/public static void t(String tag, String str) {if (sOpenLog) {LogUtils.i(tag, "DebugInfo: " + str);Throwable e = new Throwable(tag);e.printStackTrace();}}/*** 制作打log位置的文件名与文件行号详细信息** @param log* @param ste* @return*/private static String build(String log, StackTraceElement ste) {StringBuilder buf = new StringBuilder();buf.append("[").append(Thread.currentThread().getId()).append("]");if (ste.isNativeMethod()) {buf.append("(Native Method)");} else {String fName = ste.getFileName();if (fName == null) {buf.append("(Unknown Source)");} else {int lineNum = ste.getLineNumber();buf.append('(');buf.append(fName);if (lineNum >= 0) {buf.append(':');buf.append(lineNum);}buf.append("):");}}buf.append(log);return buf.toString();}private static String build(String logKey, String msg, StackTraceElement ste) {StringBuilder sb = new StringBuilder();sb.append("[").append(logKey).append("]").append(build(msg, ste));return sb.toString();}private static String build(String logKey, String msg, StackTraceElement ste, Throwable e) {StringBuilder sb = new StringBuilder();sb.append("[").append(logKey).append("]").append(ste.toString()).append(":").append(msg).append("\r\n").append("e:").append(e.getMessage());return sb.toString();}
}

做个记录获取以后能用得到!

Android开发之带行号显示的Log工具类相关推荐

  1. Android旋转视频工具类,Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】...

    本文实例讲述了Android开发实现的IntentUtil跳转多功能工具类.分享给大家供大家参考,具体如下: 说明:此工具类是本人开发中总结下来的,还有其它的跳转亲给我留言,希望大家一起把这个工具类打 ...

  2. linux带行号显示数据,linux中查看文件时显示行号

     [root@1-min etc]# cat -n rsyslog.conf//显示所有行号(包括空行) [root@1-min etc]# cat -b rsyslog.conf         ...

  3. java显示行号_java开发文本编辑器手记之行号显示

    学java编程一段时间了,想利用java swing开发一个桌面的文本编辑器程序,首先想要实现的便是显示行号的功能,由于要实现一些关键词着色功能,选择了JTextPane,其实还有一个JEditorP ...

  4. IO流 带行号的缓冲区

    package com.yyq; import java.io.*; /** 装饰类(带行号的装饰类)*/ public class LineNumberReaderDemo {public stat ...

  5. linux 空白进程,Linux空白行:行号显示、空白行数统计、删除空白行

    这里的空白行,泛指只有一个换行符的行. 空白行的行号显示: cat -b 选项,可以不在空行前面加行号.nl命令也能实现类似的效果: root@db2a:/tmp# cat -b count.sh 1 ...

  6. SyntaxHighlighter行号显示错误及代码太长无法换行解决办法

    2019独角兽企业重金招聘Python工程师标准>>> SyntaxHighlighter是一个使用JavaScript编写的功能齐全的代码语法高亮的软件.如果一行代码或注释太长的话 ...

  7. C# 重写RichTextBox带行号和下划线

    C# 重写RichTextBox带行号和下划线 效果如下 有几个关键点需要注意: 1,闪屏的问题 public UserRichTextBox()         {            //其它的 ...

  8. Android实战简易教程-第五十枪(工具类的测试)

    在开发中,为了提高开发效率,我们一般会自定义自己的工具类.为了保证项目的可靠性,在将工具类引入项目之前,我们一般都会对工具类进行单元测试,下面我们通过一个实例看一下如何搭建测试环境. 1.首先自定义一 ...

  9. 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

最新文章

  1. 带你用深度学习虚拟机进行文本迁移学习(附代码)
  2. 下一个全球电子通道系统,一定是BCH!
  3. CUDA学习-计算实际线程ID
  4. 正则表达式实战---爬取多张图片
  5. linux内核下载 编译
  6. 【鲲鹏来了】华为云鲲鹏弹性云服务器 KC1一文全掌握(4)
  7. sizeof运算符_C编程中的sizeof()运算符
  8. Python3+Selenium3自动化测试-(四)
  9. 云之讯-》返回码105147
  10. Learun,已开源,一个.net web快速开放工具
  11. 三原色是红黄蓝对吗_为什么三原色是红黄蓝而?
  12. 使用Comparator.comparing根据类的属性对list进行排序
  13. android 设计师是处女座的,处女座速成法!设计师的像素眼是怎样炼成的?
  14. 获取线的中间点(postgis)
  15. 做人晶莹剔透,做事水滴石穿
  16. slides.com 导出PDF
  17. Nova Battles是2022年值得关注的链游
  18. 将 Amazon EC2 到 Amazon S3 的数据传输推向100Gbps线速
  19. 老友记第一季台词打印_老友记台词第一季 老友记第一季台词
  20. 如何利用自动化设备行业ERP系统做好材料采购管理

热门文章

  1. 来看看,他的嵌入式之旅!
  2. 长安大学研究生院计算机学院,研究生教育
  3. 学校为什么要单位接收函_学校为什么要做校园文化建设?
  4. ubuntu查看node的安装目录_ubuntu安装nfs服务实现共享目录
  5. android studio导出apk_Android 应用构建速度提升的十个小技巧
  6. python测试开发django-44.xadmin上传图片和文件
  7. HDU 1078 FatMouse and Cheese【记忆化搜索】
  8. python学习之路 一 :编程语言介绍
  9. 公务员注册账号,密码
  10. Centos 安装mongodb