zoukankan      html  css  js  c++  java
  • Android O版本自定义日志输出目录

    Android原生系统默认情况下,log是不输出到文件的,这样对于只能用模拟器进行开发实验的人来说,不是很方便。

    当然android默认不输出log到文件也是考虑到输入日志到文件会引起性能问题。

    下面提供一种将日志定向到文件的方法

    修改system/core/logcat/logcatd.rc文件,在文件的最后添加如何代码:

    # define my log directory
    service applogcat /system/bin/logcat -v threadtime -r 4096 -n 10 -f  /data/log/android_logs/applogcat_log
         class late_start
         user root.
         group system
         disabled
         writepid /dev/cpuset/system-background/tasks

    这里定义了一个名为applogcat的服务,服务对应的可执行文件为/system/bin/logcat,后面的/data/log/android_logs/applogcat_log表示日志的输出文件路径

    修改system/core/rootdir/init.rc文件,在on post-fs-data阶段的最后添加如下代码

    注意,这里在创建data/log/android_logs目录时,分两步进行,因为在.rc文件里面不支持跨级创建文件(夹),因此这里先创建了log目录,然后才创建它的子目录android_logs。

    最后,别忘了使用start命令,启动刚才创建的applogcat服务。

    到这里,日志服务和目录已经创建好了。

    此时,编译一下,重新手机发现只有目录,并没有对应的日志文件生成。

    使用adb shell进行手机,dmesg查看一下kernel日志,发现SELinux权限报错。

    此时,正确的方法应该是给/data/log/android_logs目录添加正确的SELinux权限,由于对SELinux部分内容并不了解,暂时不懂如何添加权限,于是直接从代码上把SELinux给关了。(不推荐这种方法,只是自己玩那无所谓)

    从代码级别关闭SELinux的方法很简单,修改/system/core/init/init.cpp中的selinux_initialize(bool in_kernel_domain)方法即可,将其中的is_enforcing置为0即可。

    当然,这并不是正确的方法,等后面学习了SELinux部分的内容后,再来更新正确的方法,先把这个方法记录下来。

  • 相关阅读:
    大数据分析项目中的“最差”实践
    【Python】Python正则表达式使用指导
    大数据分析的5个方面
    你真的会python嘛?
    你是如何自学 Python 的?
    python中#!/usr/bin/python与#!/usr/bin/env python的区别
    [实验吧刷题]密码学部分
    [bugku]高阶web 综合帖
    [bugku]sqlmap部分
    【ctf第一次校赛】+不会的web/ +凉凉的省赛预赛 + 最后摸了 个二等。。
  • 原文地址:https://www.cnblogs.com/tsts/p/9311462.html
Copyright © 2011-2022 走看看