增加将log信息存入/data/中的功能

原创 2012年03月29日 20:35:51

增加将log信息存入/data/中的功能

1源码在system/extras/test/rec-kmsg/main.c

2修改system/extras/test/rec-kmsg/Android.mk

将LOCAL_MODULE_TAGS := optional

修改为LOCAL_MODULE_TAGS := optional eng

因为前者生成的文件rec-kmsg只存于out/target/product/ msm8660_surf/symbols/system中,加了eng之后,还存于out/target/product/ msm8660_surf/system中。

LOCAL_MODULE_TAGS用于指定编译android时形成的版本风格

3修改system/core/rootdir/init.rc

加入:

service rec-kmsg /system/xbin/rec-kmsg

    class main

user root

则在系统启动时,自动运行rec-kmsg。

 

  1 #include <stdio.h>
  2 #include <unistd.h>
  3 #include <fcntl.h>
  4 #include <linux/ioctl.h>
  5 #include <time.h>
  6 #include <linux/msm_audio.h>
  7 #include <pthread.h>
  8 #include <sys/ioctl.h>
  9 #include <string.h>
 10 #include <stdlib.h>
 11 #include <unistd.h>
 12 #include <stdint.h>
 13 
 14 #define CAT_BUFSIZ (4096)
 15 
 16 static void raw_cat(void)
 17 {
 18     time_t now_t = time(NULL);
 19     struct tm  now = *localtime(&now_t);
 20     char date[32];
 21     char logcat[32];
 22     char command[256];
 23     static char *buf;
 24     static char fb_buf[CAT_BUFSIZ];
 25     static size_t bsize;
 26     ssize_t nr, nw, off;
 27     int wfd, rfd;
 28 
 29     /* Get day time as file name */
 30     strftime(date, 32, "/data/%Y%m%d-%H-%M-%S-kmsg", &now);
 31     strftime(logcat, 32, "/data/%Y%m%d-%H-%M-%S-logcat", &now);
 32     date[31] = 0;
 33     logcat[31] = 0;
 34     printf("%s\n", date);
 35     snprintf(command, 256, "/system/bin/logcat -b main -b system -b events -b radio -v time *:v > %s&", logcat);
 36 
 37     system(command);
 38 
 39     /* Read fd */
 40     rfd = open("/proc/kmsg", O_RDONLY);
 41     //printf("rfd = %d\n", rfd);
 42 
 43     /* Write fd */
 44     wfd = open(date, O_RDWR|O_CREAT);
 45     //wfd = open("/data/kmsg", O_RDWR|O_CREAT);
 46     //printf("wfd = %d\n", wfd);
 47 
 48     if (buf == NULL) {
 49         buf = fb_buf;
 50         bsize = CAT_BUFSIZ;
 51     }
 52 
 53     while ((nr = read(rfd, buf, bsize)) > 0)
 54         for (off = 0; nr; nr -= nw, off += nw)
 55             if ((nw = write(wfd, buf + off, (size_t)nr)) < 0)
 56             {
 57                 perror("write");
 58                 exit(EXIT_FAILURE);
 59             }
 60 }
 61 
 62 int main(int argc, char **argv)
 63 {
 64     raw_cat();
 65     return 0;
 66 }


system/extras/tests/rec-kmsg/Android.mk

  1 ifneq ($(TARGET_SIMULATOR),true)
  2 ifeq ($(TARGET_PRODUCT),msm8660_surf)
  3 LOCAL_PATH:= $(call my-dir)
  4 include $(CLEAR_VARS)
  5 LOCAL_SRC_FILES := \
  6     main.c
  7 LOCAL_MODULE := rec-kmsg
  8 LOCAL_MODULE_TAGS := optional
  9 LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
 10 include $(BUILD_EXECUTABLE)
 11 endif  # TARGET_PRODUCT == msm8660_surf
 12 endif  # TARGET_SIMULATOR != true
~                                         


 

通过log4j实现发送错误信息的邮件功能

通过log4j实现发送错误信息的邮件功能 1.使用的场景            当你的项目是要部署到服务器上时,因为程序员没办法 无时无刻的盯着 tomacat的log日志去看,所以我们需要一种当出现...

Log4net自定义信息(变量或属性或字段)存入数据库

 本文所提及的方式,不是原创,方法都来自互联网,出处不详。自己正好了一些...
  • dacong
  • dacong
  • 2014年09月07日 22:29
  • 4346

通过AndroidManifest中的meta-data标签来设置log开关

通过AndroidManifest中的meta-data标签来设置log开关一般来说,我们在APP项目中可以通过BuildConfig.DEBUG来控制Log的开关,这样在调试的版本有log,rele...

如何使用 RMAN 增量备份恢复 data guard log gap(日志断档)

主库查询最小scn 信息: SQL> col current_scn for 999999999999999 SQL>  SELECT CURRENT_SCN FROM V$DATABASE;    ...
  • royjj
  • royjj
  • 2014年12月22日 15:18
  • 1143

使用archive log恢复data file

--创建测试表空间 create tablespace test2 datafile '/u01/app/oracle/oradata/normal/test2_01.dbf' size 10M ...

Data Guard 配置 Standby Redo Log

Data Guard在最大保护和最高可用性模式下,或者最大性能模式的实时运用、则 Standby数据库必须配置 Standby Redo Log       并且、DG从 standby redo l...

为android添加服务,把所有的Log打印输出存在/data/local/下

在android 4.1上添加服务: service logcat /system/bin/logcat -r 1000 -n 10 -v time -f /data/local/logcat.lo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:增加将log信息存入/data/中的功能
举报原因:
原因补充:

(最多只允许输入30个字)