`
zhanglibin1986
  • 浏览: 381625 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android提供的Log类

阅读更多
一个android应用程序运行后 并不会在 ide的控制台内输出任何信息. 不能在控制台输出。但是android提供的Log类。

在程序中输出日志, 使用 android.util.Log 类.
该类提供了若干静态方法

Log.v(String tag, String msg);
Log.d(String tag, String msg);
Log.i(String tag, String msg);
Log.w(String tag, String msg);
Log.e(String tag, String msg);

分别对应 Verbose, Debug, Info, Warning,Error.

tag是一个标识,可以是任意字符串,通常可以使用类名+方法名, 主要是用来在查看日志时提供一个筛选条件.

如果要后查看日志 请使用

adb logcat

关于adb的更多信息请查看官方网站.

当执行 adb logcat 后会以tail方式实时显示出所有的日志信息.

这时候我们通常需要对信息进行过滤,来显示我们需要的信息, 这时候我们指定的 tag就派上了用场.

adb logcat -s MyAndroid:I

这时将只显示tag为MyAndroid,级别为I或级别高于I(Warning,Error)的日志信息.

示例代码如下:


Java代码
package com.zijun;   
  
import android.app.Activity;   
import android.content.Context;   
import android.graphics.Canvas;   
import android.os.Bundle;   
import android.util.Log;   
import android.view.MotionEvent;   
import android.view.View;   
  
public class MyAndroid extends Activity {   
       
    protected static final String ACTIVITY_TAG="MyAndroid";   
       
    @Override  
    protected void onCreate(Bundle icicle) {   
        super.onCreate(icicle);   
        setContentView(new MyView(this));   
    }   
    public class MyView extends View {   
        public MyView(Context c) {   
            super(c);   
        }   
        @Override  
        protected void onDraw(Canvas canvas) {   
    
        }   
        @Override  
        public boolean onMotionEvent(MotionEvent event) {   
            Log.i(MyAndroid.ACTIVITY_TAG, "=============================");   
               
            Log.d(MyAndroid.ACTIVITY_TAG, "Haha , this is a DEBUG of MyAndroid. ");   
            Log.i(MyAndroid.ACTIVITY_TAG, "Haha , this is a INFO of MyAndroid. ");   
            Log.w(MyAndroid.ACTIVITY_TAG, "Haha , this is a WARNING of MyAndroid. ");   
  
            return true;   
        }   
           
    }   
  
}  

以上程序运行后, 在命令行执行  adb logcat -s MyAndroid:I
然后在手机模拟器的屏幕上 点击 拖动鼠标 就能看到相应的日志信息.

logcat是Android中一个命令行工具,可以用于得到程序的log信息。

logcat使用方法如下所示:
logcat [options] [filterspecs]
logcat的选项包括:
  -s                    设置过滤器,例如指定 '*:s'
  -f <filename>   输出到文件,默认情况是标准输出。
  -r [<kbytes>]   Rotate log every kbytes. (16 if unspecified). Requires -f
  -n <count>      Sets max number of rotated logs to <count>, default 4
  -v <format>     设置log的打印格式,  <format> 是下面的一种:
                         brief process tag thread raw time threadtime long

  -c                   清除所有log并退出
  -d                   得到所有log并退出 (不阻塞)
  -g                   得到环形缓冲区的大小并退出
  -b <buffer>     请求不同的环形缓冲区    ('main' (默认), 'radio', 'events')
  -B                   输出log到二进制中。

过滤器的格式是一个这样的串:
  <tag>[:priority]

其中 <tag> 表示log的component, tag (或者使用 * 表示所有) , priority 如下所示:
  V    Verbose
  D    Debug
  I    Info
  W    Warn
  E    Error
  F    Fatal
  S    Silent


事实上logcat的功能是由Android的类android.util.Log决定的,在程序中log的使用方法如下所示:
Log.v() -------------------- VERBOSE
Log.d() -------------------- DEBUG
Log.i() -------------------- INFO
Log.w() -------------------- WARN
Log.e() -------------------- ERROR
以上log的级别依次升高,DEBUG信息应当只存在于开发中,INFO, WARN,ERROR这三种log将出现在发布版本中。

对于JAVA类,可以声明一个字符串常量TAG,Logcat可以根据他来区分不同的log,例如在计算器(Calculator)的类中,定义如下所示:

public class Calculator extends Activity {
/* ...... */
    private static final String LOG_TAG = "Calculator";
    private static final boolean DEBUG  = false;
    private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
/* ...... */
   由此,所有在Calculator中使用的log,均以"Calculator"为开头。

例如使用方法如下所示:
# logcat &
< 得到一个log片段 >
W/KeyCharacterMap(  130): No keyboard for id 0
W/KeyCharacterMap(  130): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
I/ActivityManager(   52): Displayed activitycom.android.contacts/.DialtactsContactsEntryActivity: 983 ms
I/ARMAssembler(   52): generated scanline__00000077:03545404_00000A04_00000000 [ 29 ipp] (51 ins) at [0x25c978:0x25ca44] in 1764174 ns
I/ARMAssembler(   52): generated scanline__00000077:03515104_00000001_00000000 [ 46 ipp] (65 ins) at [0x25d1c8:0x25d2cc] in 776789 ns
D/dalvikvm(  130): GC freed 834 objects / 81760 bytes in 63ms
D/dalvikvm(   52): GC freed 10588 objects / 425776 bytes in 94ms

其中W/I/D表示log的级别,“dalvikvm”“ARMAssembler”等是不同组件(component)的名称,后面括号里面的数字表示了发出log的进程号。

使用技巧:
1.使用logcat &在后台运行
2.使用-d得到所有log
3.使用-f或者重定向(>和>>)输出到文件
4.使用-s设置过滤器,得到想要的log。

当然,最重要的还是在程序中加入恰当的log.

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/setsuna_L_seiei/archive/2010/01/19/5206232.aspx



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/alley_zhang/archive/2010/07/05/5713894.aspx
分享到:
评论

相关推荐

    超实用的android自定义log日志输出工具类

    android自定义log日志输出工具,该工具类具有以下优点: 1 在LogUtlis方法的第一个参数中填this可以输出当前类的名称,特别是在匿名内部类使用也可以输出当前类名。 如 : LogUtils.i(this,”这是一个实用的日志...

    类似Android下Log类

    Java项目下用的一个实现了类似Android下Log类。Android向Java学习的同学习惯的Log.i()用法

    自定义android Log类

    首先,Android系统的Log类位于`android.util`包下,提供了`d()`, `v()`, `i()`, `w()`, `e()`等方法,分别对应DEBUG、VERBOSE、INFO、WARN和ERROR五个级别。这些方法接受标签(tag)和消息(message)作为参数,用于...

    类似Android下Log类 带扩展类

    Java项目下用的一个实现了类似Android下Log类。Android向Java学习的同学习惯的Log.i()用法 追加了一些扩展类 可满足日志分析需求

    Android显示Log信息(带行号)

    Android系统自带的Log工具提供了基本的日志输出功能,包括`Log.v()`(verbose)、`Log.d()`(debug)、`Log.i()`(info)、`Log.w()`(warn)、`Log.e()`(error)等方法,但它们默认并不显示行号。在复杂项目中,...

    Android log工具类

    android 下方便的打印log 在sd上写入log

    android打印log工具

    开发者可以通过`Log`类提供的静态方法(如`Log.d()`, `Log.i()`, `Log.w()`, `Log.e()`等)来输出不同级别的LOG,便于分析程序状态和追踪问题。然而,系统默认的LOG打印方式可能无法满足所有开发者的需求,因此出现...

    android中Log的实现机制

    Android平台为开发者提供了一套轻量级的日志(Log)管理机制。这套机制不仅贯穿于Java层、JNI层、C/C++层乃至Linux内核层等多个层面,而且其实现逻辑清晰明了,非常适合深入研究和学习。本文将详细探讨Android中Log的...

    Android代码-DebugLog

    android.util.Log is the most usable library of the Android. But, when the app released on the market, some important information is clearly forgotten by the developer. All logs are disabled by Debug...

    Android-Log4a是一个基于mmap高性能高可用的Android日志收集框架

    Log4a is an mmap based, high-performance, highly available Android log collection framework | Log4a 是一个基于 mmap, 高性能、高可用的 Android 日志收集框架

    android保存log到本地的工具类

    Android系统提供了一个内置的日志框架,允许开发者通过`Log`类输出不同级别的日志信息,如`VERBOSE`、`DEBUG`、`INFO`、`WARN`、`ERROR`和`ASSERT`。这些级别由低到高,通常在开发阶段使用较高的日志级别,发布时则...

    android中log对象的使用

    Android系统提供了`android.util.Log`类,提供了多种级别的日志输出方法,包括`Log.v()`, `Log.d()`, `Log.i()`, `Log.w()`, 和 `Log.e()`。 1. `Log.v(String tag, String msg)`:VERBOSE级别,输出最为详细的信息...

    AndroidStudio 使用log4j记录日志,按照大小定期滚动日志Demo

    在Android环境中,由于系统默认的日志记录器(Logcat)有一些限制,如日志长度、级别控制等,因此,引入log4j可以提供更高级别的控制和定制能力。 1. **集成log4j到Android项目** 要在Android项目中使用log4j,...

    Android-AndroidLog日志打印输出到文件方便查看和上传到服务器

    标题"Android-AndroidLog日志打印输出到文件方便查看和上传到服务器"所描述的,就是一种将Android应用的日志信息写入到本地文件的方法,以便后续分析或上传到远程服务器。这个方法能够帮助开发者在无法直接访问设备...

    Android-AndroidLog工具

    `AndroidLog工具`是为了提供比标准Android `Log`类更为实用的功能而设计的。标题中的"1个类,100个方法、9 KiB"表明这是一个轻量级且功能丰富的库,旨在提高开发效率。 这个工具可能包含了以下特性: 1. **多级别...

    示范如何在android工程中使用log4j记录日志

    Log4j是一个广泛使用的Java日志框架,它提供了强大的日志处理功能,包括日志级别控制、自定义日志格式、多路复用等。然而,由于Android系统对第三方库的限制,直接在Android工程中使用Log4j需要一些额外的步骤。本文...

    android-log power 各包电量分析

    android-log power 各包电量分析

    Log4Android2PCv2.3.7

    Log4Android是基于Apache Log4j理念设计的一个Android日志框架,它提供了丰富的日志级别(如DEBUG、INFO、WARN、ERROR等)和灵活的日志配置,使开发者能够更精确地控制日志输出,同时提高日志记录的效率。...

    自定义Android Log打印类

    * 自定义Log打印类 * 在打印给定字符的同时,还打印出所在语句的方法名、行号、类名,甚至详细调用栈等信息 * 可通过DEBUG控制是否打印 * 可通过POSITION控制是否打印所在语句信息

Global site tag (gtag.js) - Google Analytics