android.util.Log常用的方法有以下5个:

Log.v() Log.d() Log.i() Log.w() 以及 Log.e()。根据首字母分别对应VERBOSE,DEBUG,INFO,WARN,ERROR。

1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");

2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择。

3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息。

4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。

5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。

  1 public class MyLog {
2 private static Boolean MYLOG_SWITCH = true; // 日志文件总开关 3 private static Boolean MYLOG_WRITE_TO_FILE = true;// 日志写入文件开关 4 private static char MYLOG_TYPE = 'v';// 输入日志类型,w代表只输出告警信息等,v代表输出所有信息 5 private static String MYLOG_PATH_SDCARD_DIR = "/sdcard/";// 日志文件在sdcard中的路径 6 private static int SDCARD_LOG_FILE_SAVE_DAYS = 0;// sd卡中日志文件的最多保存天数 7 private static String MYLOGFILEName = "Log.txt";// 本类输出的日志文件名称 8 private static SimpleDateFormat myLogSdf = new SimpleDateFormat(
9 "yyyy-MM-dd HH:mm:ss");// 日志的输出格式 10 private static SimpleDateFormat logfile = new SimpleDateFormat("yyyy-MM-dd");// 日志文件格式 11 public Context context;
12 13 public static void w(String tag, Object msg) { // 警告信息 14 log(tag, msg.toString(), 'w');
15 }
16 17 public static void e(String tag, Object msg) { // 错误信息 18 log(tag, msg.toString(), 'e');
19 }
20 21 public static void d(String tag, Object msg) {// 调试信息 22 log(tag, msg.toString(), 'd');
23 }
24 25 public static void i(String tag, Object msg) {//
26 log(tag, msg.toString(), 'i');
27 }
28 29 public static void v(String tag, Object msg) {
30 log(tag, msg.toString(), 'v');
31 }
32 33 public static void w(String tag, String text) {
34 log(tag, text, 'w');
35 }
36 37 public static void e(String tag, String text) {
38 log(tag, text, 'e');
39 }
40 41 public static void d(String tag, String text) {
42 log(tag, text, 'd');
43 }
44 45 public static void i(String tag, String text) {
46 log(tag, text, 'i');
47 }
48 49 public static void v(String tag, String text) {
50 log(tag, text, 'v');
51 }
52 53 /** 54 * 根据tag, msg和等级,输出日志
55 *
56 * @param tag
57 * @param msg
58 * @param level
59 * @return void
60 * @since v 1.0
61 */ 62 private static void log(String tag, String msg, char level) {
63 if (MYLOG_SWITCH) {
64 if ('e' == level && ('e' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) { // 输出错误信息 65 Log.e(tag, msg);
66 } else if ('w' == level && ('w' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) {
67 Log.w(tag, msg);
68 } else if ('d' == level && ('d' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) {
69 Log.d(tag, msg);
70 } else if ('i' == level && ('d' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) {
71 Log.i(tag, msg);
72 } else {
73 Log.v(tag, msg);
74 }
75 if (MYLOG_WRITE_TO_FILE)
76 writeLogtoFile(String.valueOf(level), tag, msg);
77 }
78 }
79 80 /** 81 * 打开日志文件并写入日志
82 *
83 * @return 84 * **/ 85 private static void writeLogtoFile(String mylogtype, String tag, String text) {// 新建或打开日志文件 86 Date nowtime = new Date();
87 String needWriteFiel = logfile.format(nowtime);
88 String needWriteMessage = myLogSdf.format(nowtime) + " " + mylogtype
89 + " " + tag + " " + text;
90 File dirPath = Environment.getExternalStorageDirectory();
91 File file = new File(dirPath.toString(), needWriteFiel + MYLOGFILEName);// MYLOG_PATH_SDCARD_DIR 92 try {
93 FileWriter filerWriter = new FileWriter(file, true);// 后面这个参数代表是不是要接上文件中原来的数据,不进行覆盖 94 BufferedWriter bufWriter = new BufferedWriter(filerWriter);
95 bufWriter.write(needWriteMessage);
96 bufWriter.newLine();
97 bufWriter.close();
98 filerWriter.close();
99 } catch (IOException e) {
100 e.printStackTrace();
101 }
102 }
103104 /**105 * 删除制定的日志文件
106 * */107 public static void delFile() {// 删除日志文件108 String needDelFiel = logfile.format(getDateBefore());
109 File dirPath = Environment.getExternalStorageDirectory();
110 File file = new File(dirPath, needDelFiel + MYLOGFILEName);// MYLOG_PATH_SDCARD_DIR111 if (file.exists()) {
112 file.delete();
113 }
114 }
115116 /**117 * 得到现在时间前的几天日期,用来得到需要删除的日志文件名
118 * */119 private static Date getDateBefore() {
120 Date nowtime = new Date();
121 Calendar now = Calendar.getInstance();
122 now.setTime(nowtime);
123 now.set(Calendar.DATE, now.get(Calendar.DATE)
124 - SDCARD_LOG_FILE_SAVE_DAYS);
125 return now.getTime();
126 }
127 }

注:还需要在AndroidManifest.xml文件中添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Android输出日志Log类的更多相关文章

  1. Android输出日志Log类并保存到文件中

    android.util.Log常用的方法有以下5个: Log.v() Log.d() Log.i() Log.w() 以及 Log.e().根据首字母分别对应VERBOSE,DEBUG,INFO,W ...

  2. Android学习笔记Log类输出日志信息

    Log类提供的方法 代码示例 .. Log.e(TAG,"[错误信息]"); Log.w(TAG,"[警告信息]"); Log.i(TAG,"[普通信 ...

  3. Android输出日志到电脑磁盘

    使用Eclipse查看Log有时候挺恶心的,有些Log ADB会自动的清除,所有有时候导致抓不到有效的Log,把Log保存到文件,然后通过文本查看器查看,感觉好Happy,下面就是脚本文件: adb ...

  4. android 代码优化:关闭输出日志

    android关闭日志 我们在开发时,经常会输出各种日志来debug代码.但是等到应用发布的apk运行时不希望它输出日志. 关闭输出日志Log.v(),Log.i(),Log.w(),Log.v(), ...

  5. Android Log类基本用法

    Log类介绍: API for sending log output.Generally, use the Log.v() Log.d() Log.i() Log.w() and Log.e() me ...

  6. android关闭日志

    我们在开发时,经常会输出各种日志来debug代码.但是等到应用发布的apk运行时不希望它输出日志. 关闭输出日志Log.v(),Log.i(),Log.w(),Log.v(),Log.e()等 原理: ...

  7. log4j2分层输出日志

    在java mvc框架开发过程中,我们经常的将代码分为类似controller(控制层).service(业务层).rpc(远程接口调用层).dao(数据层)等层级,如果将所有层级的日志全部都打到一个 ...

  8. Android学习笔记——log无法输出的解决方法和命令行查看log日志

    本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论. 欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai/p/3983936.html. 知识 ...

  9. 关于android的日志输出&LogCat

    android提供了自己的log输出api-->位于android.util.Log这个类中. 这个类比较常用的打印日志的方法有5个,这5个方法都会把日志打印到LogCat中: Log.v(ta ...

随机推荐

  1. C#网络编程技术FastSocket实战项目演练

    一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而 ...

  2. .Net Discovery 系列之七--深入理解.Net垃圾收集机制(拾贝篇)

    关于.Net垃圾收集器(Garbage Collection),Aicken已经在“.Net Discovery 系列”文章中有2篇的涉及,这一篇文章是对上2篇文章的补充,关于“.Net Discov ...

  3. I/O会一直占用CPU吗?【转载】

    转自:https://www.zhihu.com/question/27734728 知乎上看到的一个提问,可以参考 如下图:(图片摘自网络) 在进行I/O操作的时候,是将任务交给DMA来处理,请求发 ...

  4. 一键GHOST优盘版安装XP/win7系统

    系统的安装方法有各种各样,一键GHOST优盘版也是其中的一种系统安装方法,也是俗称的U盘系统安装.下面豆豆来详细介绍下使用一键GHOST优盘版系统安装方法. 一.安装: 所谓"优盘" ...

  5. linux 除了某个文件或某个文件夹以外全部删除

    比如一个目录下有1,2,3,4,5这五个文件,现在我需要删除除了2以外的所有文件,那么我可以使用 find . ! -name 2 -exec rm -f {} \; 当然你还可以配合着 -maxde ...

  6. 【Devops】【docker】【CI/CD】jenkins源码管理,添加SSH地址后报错+Jenkins构建报错:Please make sure you have the correct access rights and the repository exists.

    jenkins源码管理,添加SSH地址后报错: Could not read from remote repository. Please make sure you have the correct ...

  7. ios成长之每日一遍(day 5)

    iOS 屏幕方向那点事儿http://zhenby.com/blog/2013/08/20/talk-ios-orientation/ 针对当前的屏幕方向进行对应的代码布局 BIDViewContro ...

  8. SVG 使用marker画箭头(一)

    一.使用Marker画箭头 1.定义一个箭头的marker引用 <defs> <marker id='markerArrow' markerWidth='13' markerHeig ...

  9. asp.net 判断用户是否使用微信浏览器

    平时我们看一些网页的时候会发现这样的功能:有的页面只能在微信里访问,如果在电脑上访问就提示用户请到微信上访问该网页.这个用C#怎么实现呢?我们结合代码来看看. 首先,我们需要先判断用户使用的是什么浏览 ...

  10. 修改VIM恶心的注释自动格式化

    我复制一段代码,里面有// 只有一行,但是复制到vim中就下面全部都有//了.我要取消这个功能 vim ~/.vimrc set nu! "set formatoptions=croql 这 ...