Android的日志系统分层与logcat使用
android的日志系统有典型的android层次结构。本文指出路径,分析层次但不分析代码,这里还介绍logcat的使用和log_bg服务。
日志系统分层
1.先从驱动开始
- linux-3.10/drivers/staging/android/logger.c
- linux-3.10/drivers/staging/android/logger.h
- logger_init创建4个日志设备文件/dev/main、/dev/events、/dev/radio、/dev/system。
- 分析代码的话跟踪结构体static const struct file_operations logger_fops实例化的函数进行分析。
2.C/C++本地库和android实时运行库层
在android/system/core/liblog目录下,分析Android.mk可知主要是logd_write.c和fake_log_device.c其它根据WITH_MINGW配置。
3.JNI
frameworks/base/core/jni/android_util_Log.cpp
4.Application Frameworks
frameworks/base/core/java/android/util/Log.java
5.APP中使用日志系统
import android.util.Slog
然后Slog.e(TAG,"***")使用错误日志
现在分层
logcat工具使用
代码路径android/system/core/logcat/logcat.cpp,输入logcat --h
查看帮助。
这里我们修改logcat.cpp设置日志系统默认每个日志文件的大小,日志文件的个数
static int g_logRotateSizeKBytes = 4096; // 0 means "no log rotation" static int g_maxRotatedLogs = 10; // 0 means "unbounded"
每个日志文件最大4M,最多10个。当10个日志写满有最新的日志时,原日志名尾号9删除,其余尾号+1,最新日志写到尾号0的日志。实现固定大小,循环使用。
log_bg.sh工具
android/device/softwinner/common/tools/log_bg.sh
前面几个循环是计数,删除,重命名。
系统日志logcat -v time -f /cache/local/boot_log/aw_${count}_system_boot.log &
内核日志cat /proc/kmsg >> /cache/local/boot_log/aw_${count}_kernel_`date +%Y%m%d-%H%M`.log &
android开机就会记录日志记录,输入ps查询到
root 1668 1646 1632 948 c0122258 b6f57720 S logcat
在init.rc文件中查找发现日志服务的启动位置android/device/softwinner/common/init.debug.rc
service log_bg /system/bin/sh /system/bin/log_bg.sh class core user root group root system oneshot
logger.sh工具
android/device/softwinner/common/tools/logger.sh
实际这个工具根据输入参数kernel
、android
、radio
、error
调用logcat
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
Android开发笔记之:一分钟学会使用Logcat调试程序的详解
这是个很简单的问题,但每次隔一段时间后使用起来总是会出点乱子.这里记录下Logcat的步骤:1,在Activity里申明tag变量(名字其实是随便的,如下:private static final String tag="yan";2,需要使用logcat输出信息时:Log.i(tag, "屏幕宽度:"+display.getWidth()+" 屏幕高度:"+display.getHeight());3, 双击Logcat,点击"+&q
-
Android Studio使用小技巧:自定义Logcat
我们都知道Logcat是我们Android开发调试最常用的一个工具,但是Android Studio默认的Logcat调试的颜色是一样的,我们不好区分verbose.debug.error等分类信息,今天就来教大家自定义Logcat的提示信息. 打开Preference->Editor->Colors & Fonts->Android Logcat(或者搜索logcat),如果我们默认选择的是Darcula主题会看到如下界面: 这个默认的是无法更改,我们可以点击"Sav
-
logcat命令使用方法和查看android系统日志缓冲区内容的方法
*注:可以用 adb logcat > 路径/文件名 来保存,此命令执行之时起的全部日志信息到一个文件里,ctrl + C 结束日志输出:后面不加 > 路径/文件名 的话,则在 stdout (终端窗口)中输出!例如:$ adb logcat -v long Checkin *:S > ~/桌面/log.txt 一.在 Java 与 C 语言中输出日志:1) Java 代码在程序中输出日志, 使用 android.util.Log 类的以下 5 个方法: Log.v().Log.d(
-
android真机调试时无法显示logcat信息的解决方法介绍
android真机调试时无法显示logcat信息的解决方法介绍: window-->show view-->android->devices, 打开devices,点击右边的截屏图片的按钮.等到出现截图的时候,logcat就出来信息了!
-
Android开发之在程序中时时获取logcat日志信息的方法(附demo源码下载)
本文实例讲述了Android开发之在程序中时时获取logcat日志信息的方法.分享给大家供大家参考,具体如下: 今天分享一个在软件开发中很实用的例子,也是这几天在通宵加班中我使用的一个小例子, 在程序中监听Log信息. 为什么说它实用?原因是Android的开发厂商各种修改之后手机和手机之间以后存在很多差异.比如说魅族M9手机 开发中如果项目中涉及到访问手机系统的地方,例如访问系统短信库,M9手机它会提示一个dialog框 让用户自己去选择 访问还是不访问.这样就给开发适配带来了巨大的麻烦.本来
-
Android shell命令行中过滤adb logcat输出的几种方法
我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法. 1.只显示需要的输出(白名单) 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp: adb logcat | grep MyApp adb logcat | grep -i
-
Android 日志系统Logger源代码详细介绍
我们知道,在Android系统中,提供了一个轻量级的日志系统,这个日志系统是以驱动程序的形式实现在内核空间的,而在用户空间分别提供了Java接口和C/C++接口来使用这个日志系统,取决于你编写的是Android应用程序还是系统组件.在前面的文章浅谈Android系统开发中LOG的使用中,已经简要地介绍了在Android应用程序开发中Log的使用方法,在这一篇文章中,我们将更进一步地分析Logger驱动程序的源代码,使得我们对Android日志系统有一个深刻的认识. 既然Android 日志系统是
-
Android调试华为和魅族手机logcat不显示的问题
前言: 最近公司在项目开发中,由于华为手机存在部分的问题.所以购买了部分新款的华为手机.在真机调试项目APP时,老是无法出现Logcat打印出来的各种错误信息. ▲ 问题分析 google查证之后确定,目前国内华为.魅族手机都会有同样的情况.原因是国内的部分厂商定制的手机对于应用中的 Log 日志默认做了打印限制,需要手动设置才能打印出特殊级别的日志. ▲ 解决方案 华为(HUAWEI) 进入工程模式 启动拨号应用,输入:##2846579## 这样一串东西即可 选择"1.后台设置"
-
Android adb logcat 命令查看日志详细介绍
Android 开发的程序员开发程序的时候,一定为log而苦恼过吧.Eclipse老是Log找不到,是不是很让人不爽,虽然Android Studio的Logcat功能很不错,但也没有在命令行terminal中打印出来更方便. 使用 logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是: [adb] logcat [<option>] ... [<filter-spec>] ... 下文介绍过滤器和命令选项,详细内容可参见Listing of logcat C
-
Android的日志系统分层与logcat使用
android的日志系统有典型的android层次结构.本文指出路径,分析层次但不分析代码,这里还介绍logcat的使用和log_bg服务. 日志系统分层 1.先从驱动开始 linux-3.10/drivers/staging/android/logger.c linux-3.10/drivers/staging/android/logger.h logger_init创建4个日志设备文件/dev/main./dev/events./dev/radio./dev/system. 分析代码的话跟踪
-
解决Android Studio日志太长或滚动太快问题
前言 安卓开发经常遇到那种日志太长或滚动得太快, 我们直接的解决办法就是进行日志输出长度增大和添加日志过滤器,个人推荐用adb logcat处理更加方便灵活. 解决办法 1. 搜索过滤器 2. 修改日志缓冲大小 找到 " Android Studio安装目录\bin\idea.properties" 文件中的 idea.cycle.buffer.size=1024 修改成你要的缓冲大小即可. 3. adb logcat 输出日志到指定文件(不能解决日志过长的问题) i. 配置adb环境
-
.net 日志系统解析
一. 写在前面 日志系统对于任何项目都是必不可少的,无论对于测试阶段的debug,性能测试,执行时间,操作记录还是线上的问题排查,访问记录等,日志系统都扮演着重要的角色.本篇分享的目的是能帮助需要的人快速搭建自己的LogSystem.,仅供参考. 先上个图呗,自认为页面还算清爽吧: 我的LogSystem使用Log4net入库的方式,网上特别多的分享,但是能完整运行下来的真是很少,所以现在需要和以后用得上的小伙伴抓紧收藏咯. 二. Log4Net自定义内容入库 Log4Net存日志的方式,
-
android编程实现系统图片剪裁的方法
本文实例讲述了android编程实现系统图片剪裁的方法.分享给大家供大家参考,具体如下: package cn.test; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentUris; impo
-
Android 实现调用系统照相机拍照和录像的功能
本文实现android系统照相机的调用来拍照 项目的布局相当简单,只有一个Button: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_heig
-
Android实现调用系统相册和拍照的Demo示例
本文讲述了Android实现调用系统相册和拍照的Demo示例.分享给大家供大家参考,具体如下: 最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的.确实是,我记得一个月前,我一同学也遇到了这样的问题,在低版本的系统中没问题,用高于4.4版本的系统就崩溃.所以,我还是想提取出来,给大家整理一下,一个比较完整无bug的demo,让大家收藏,留着以后用. 其实对于调用手机图库,高版本的系统会崩溃,是因为获取方法变了,所以我们应该
-
JS辨别访问浏览器判断是android还是ios系统
项目中需要扫描二维码之后自动分辨出是android还是ios系统,针对于不同的系统进行不同的下载. <script type="text/javascript"> /* * 智能机浏览器版本信息: * */ var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appVersion; return {//移动终端浏览器版本信息 trident: u.indexO
-
Android获取手机系统版本等信息的方法
本文实例讲述了Android获取手机系统版本等信息的方法.分享给大家供大家参考.具体如下: String phoneInfo = "Product: " + android.os.Build.PRODUCT; phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI; phoneInfo += ", TAGS: " + android.os.Build.TAGS; phoneInfo += &qu
-
Android编程实现系统重启与关机的方法
本文实例讲述了Android编程实现系统重启与关机的方法.分享给大家供大家参考,具体如下: 最近在做个东西,巧合碰到了sharedUserId 的问题,所以收集了一些资料,存存档备份. 安装在设备中的每一个apk文件,Android 给每个 APK 进程分配一个单独的用户空间,其 manifest 中的 userid 就是对应一个 Linux 用户都会被分配到一个属于自己的统一的 Linux 用户 ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它). 用户 ID 在应用
随机推荐
- asp.net图片文件的上传与删除方法
- 如何对文件进行操作?
- CentOS 7下MySQL服务启动失败的快速解决方法
- java使用监听器实现一个统计网站在线人数的示例
- Python文件读取的3种方法及路径转义
- php中静态类与静态变量用法的区别分析
- php cookies中删除的一般赋值方法
- input框中的name和id的区别
- tornado框架blog模块分析与使用
- Python实现根据IP地址和子网掩码算出网段的方法
- C经典算法之二分查找法
- linux dev 常见特殊设备介绍与应用(loop,null,zero,full,random)
- Sql Server中的系统视图详细介绍
- JQuery的Alert消息框插件使用介绍
- 基于jQuery实现在线选座之高铁版
- 深入探讨"<br />"和 "\r\n" 两者有什么区别??
- C++不使用变量求字符串长度strlen函数的实现方法
- Netty学习教程之Netty与Marshalling结合发送对象
- visual studio 2012安装配置方法图文教程 附opencv配置教程
- Android实现应用内置语言切换功能