Android输出日志Log类

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     }
103
104     /**
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_DIR
111         if (file.exists()) {
112             file.delete();
113         }
114     }
115
116     /**
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" />

时间: 2024-11-03 17:38:59

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

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

android关闭日志 我们在开发时,经常会输出各种日志来debug代码.但是等到应用发布的apk运行时不希望它输出日志. 关闭输出日志Log.v(),Log.i(),Log.w(),Log.v(),Log.e()等 原理: 那么我们可以通过proguard来删除各种日志输出代码.然后导出apk时,将会过滤掉日志代码. 通过配置proguard,将类android.util.Log的方法给置为为无效代码.(proguard是一个代码优化的工具,也可以混淆代码) assumenosideeffec

Android Log类基本用法

Log类介绍: API for sending log output.Generally, use the Log.v() Log.d() Log.i() Log.w() and Log.e() methods. The order in terms of verbosity, from least to most is ERROR, WARN, INFO, DEBUG, VERBOSE. Verbose should never be compiled into an application

android关闭日志

我们在开发时,经常会输出各种日志来debug代码.但是等到应用发布的apk运行时不希望它输出日志. 关闭输出日志Log.v(),Log.i(),Log.w(),Log.v(),Log.e()等 原理: 那么我们可以通过proguard导出apk时删除各种日志输出代码.然后,将会过滤掉日志代码. 通过配置proguard,将类android.util.Log的方法给置为为无效代码,然后在导出的apk里就是被删除掉日志的.(proguard是一个代码优化的工具,也可以混淆代码) 如何关闭日志: 我的

对于Android系统Log输出日志的封装LogUtils

MainActivity如下: package cc.cn.logutil; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 对于Android系统Log输出日志的封装LogUtils * 1 可修改LogUtils中的LEVEL值觉得哪些级别的日志可以输出. * 所以方便选择性输出日志或者屏蔽日志输出 * 2 输出的日志除了本想输出的信息外还包含了该日志输出时所属 * 的线程,类,方法名,已经在该方法

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

本人邮箱:[email protected],欢迎交流讨论. 欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai/p/3983936.html. 知识点 1.log无法输出的解决方法 2.通过命令行(command line)查看Android调试的log日志 log无法输出的解决方法 今天调试Android程序,发现Eclipse不输出log日志了.这让我很烦恼,程序调试的log都没法看到了.Google搜索了一些资料.发现stackoverflow上有很

Android开发调试日志工具类[支持保存到SD卡]

直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.net.UnknownHostException; import java.text.SimpleDateFormat; impor

Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件

关注finddreams,一起分享,一起进步!http://blog.csdn.net/finddreams/article/details/45569089 在开发中,我们常常用打印log的方式来调试我们的应用.在Java中我们常常使用方法System.out.println()来在控制台打印日志,以便我们的调试.Android中有一个专门的类Log来实现在Android系统下日志的打印,更加方便我们定位程序出现问题的地方. 但是Android官方提供的Log类在实际项目使用中,也不是非常方便

android中Log类的封装

1.为了方便的使用Log打印日志,以及后续方便撤销日志打印,所以对Log类进行封装是一件好事. 1 package market.phone; 2 3 import android.util.Log; 4 5 /** 6 * 自己封装的log类,按是调试或者是实际 7 * Created by Administrator on 2017/6/13. 8 */ 9 10 public class LogU { 11 /*m默认不打印Log,如果要打印,置为true*/ 12 private sta

android Loger日志类(获取内置sd卡)

Android手机自带内部存储路径的获取 原文地址:http://my.oschina.net/liucundong/blog/288183 直接贴代码: public static String getExternalSdCardPath() { if (SDCardUtils.isSDCardEnable()) { File sdCardFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());