Android中添加syslog功能
来源:互联网 发布:js concat连接字符串 编辑:程序博客网 时间:2024/06/07 05:24
因为需要所以尝试,在Android中添加syslog功能
已知:
Android中
1. C库提供syslog函数,它将字符串写入/dev/kmsg中,这是个字符设备。
2. 任何输出到/dev/kmsg的信息,都作为内核的日志处理,通过dmsg查看(网上文章是这样写的,未验证)。
3. 用于日志功能的三个字符设备 main、events、radio,都在/dev/log/目录中。
4. logcat使用这三个字符设备,作为Android系统的日志管理功能的一部分。
SYSV Linux中
1. C库提供syslog函数,它将字符串写入/dev/log中,这是一个socket接口。
2. 类似sysklogd、rsyslog、syslogd、syslog-ng等服务程序都使用/dev/log获取信息。
3. 以上日志服务将从/dev/log获取的字符串,保存到文件中或者打印到终端,或者发送到远程服务器中。
4. 日志服务也能从网络获取日志信息,这是它通常被叫做远程日志服务器,并保存到文件中或者再转发到远程服务器。
于是可知,SYSV Linux日志系统与Android的日志系统不兼容,必须解决/dev/log冲突的问题。
解决办法是在Android里面建立/dev/log/log,
1. 这样不会影响原来的Android的日志系统。
2. syslogd将作为一个相对独立的应用软件运行,避免与Android系统有过多关联
3. 在Android中添加一个独立的库,提供类似Linux C库中的syslog同名函数;
4. 实践中发现,当新添加的syslog函数与Linux C库中的函数重名的时候,一定会调用新添加的(理论上应是随机的)
5. 第三方日志软件(如log4c)可以直接使用/dev/log/log来记录日志
6. 毕竟在目前的应用场景下,要使用syslog类的服务器软件还都是从Linux移植来的应用系统。
故
1. 修改启动sysklogd参数,使其避开冲突 syslogd -p /dev/log/log
2. 仿照syslog.c(来源于sysklog开源软件)编写一个系统库,专门为应用程序提供写/dev/log/log的能力
3. 再仿照syslog.c(来源于sysklog开源软件)编写一个测试程序,即可验证即可。
参考资料:
1. Android日志系统驱动程序Logger源代码分析
2. Android应用程序框架层和系统运行库层日志系统源代码分析
3. 通过syslog接收远程日志
----------这是漂亮的分割线--------------
D:\ourproject\gensyslog\Android.mk
# Porting Automake to NDK
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := gensyslog.c
LOCAL_C_INCLUDES:= += \
#
LOCAL_CFLAGS += $(common_CFLAGS)
LOCAL_SHARED_LIBRARIES += \
#
LOCAL_MODULE:= gensyslog
LOCAL_MODULE_TAGS:=eng
LOCAL_PRELINK_MODULE := false
include $(BUILD_EXECUTABLE)
#include $(BUILD_SHARED_LIBRARY)
#############################################
include $(CLEAR_VARS)
LOCAL_COPY_HEADERS_TO := libsyslog_our_project
LOCAL_COPY_HEADERS
LOCAL_SRC_FILES := libsyslog_our_project.c
LOCAL_C_INCLUDES:= += \
LOCAL_CFLAGS += $(common_CFLAGS)
LOCAL_SHARED_LIBRARIES += \
LOCAL_MODULE:= libsyslog_our_project
LOCAL_MODULE_TAGS:=eng
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)
#############################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES := gensyslog_our_project.c
LOCAL_C_INCLUDES:= += \
LOCAL_CFLAGS += $(common_CFLAGS)
LOCAL_SHARED_LIBRARIES += \
LOCAL_MODULE:= gensyslog_our_project
LOCAL_MODULE_TAGS:=eng
LOCAL_PRELINK_MODULE := false
include $(BUILD_EXECUTABLE)
D:\ourproject\gensyslog\gensyslog.c
#include
#include
#include
int main( int argc, char * argv[] )
{
}
D:\ourproject\gensyslog\gensyslog_our_project.c
#include
int main( int argc, char * argv[] )
{
};
D:\ourproject\gensyslog\libsyslog_our_project.c
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define
static int
static int
static int
static const char *LogTag = "syslog";
static int
void syslog_our_project(int pri, const char *fmt, ...)
{
}
void syslog(int pri, const char *fmt, ...)
{
}
void vsyslog(pri, fmt, ap)
{
- Android中添加syslog功能
- Python中syslog功能代码
- Android中搜索功能的添加
- Android中在ActionBar中添加搜索功能
- 添加Android系统功能
- Android添加@联系人功能
- android 中如何添加新的键值,实现更多功能
- Android中实现Launcher功能之一 ----- 添加快捷方式
- android settings模块中添加来电反转静音功能
- (转)Android中实现Launcher功能之一 ----- 添加快捷方式
- 在Android系统中添加组合键快捷启动功能
- android 中添加 Google Play Game Services 功能 1
- 在Android应用中添加修改主题功能
- android 5.1中添加来电翻转静音的功能
- Android中,如何实现在图片上添加返回功能
- 如何在自己的Android项目中添加扫一扫功能
- 在Android studio的一个新建的Activity中添加Toolbar以及相应的功能添加
- android reboot 功能的添加
- Java虚拟机学习笔记(1)Windows下编译OpenJDK8
- node.js npm安装
- Android 发送和接收定制广播
- NoScrollViewPager解决嵌套listView依然可以滑动的问题
- Android平台HttpGet、HttpPost请求实例
- Android中添加syslog功能
- 在eclipse中添加tomcat
- myeclipse10.7导出war包时出错解决办法(转)
- Map 综述 彻头彻尾理解 HashTable
- 关于jQuery的一些总结
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
- android三大动画的基本使用
- javascript切换搜索引擎的导航网页搜索框
- CSS中实现左边固定,右边自适应