android 打印kernel log,Android native log输出为kernel log方法

1:包含kernel log对应用户空间头文件#include

2:

#define KPOC_LOGI(x...) do { KLOG_ERROR("client", x); } while (0)

#define KPOC_LOGE(x...) do { KLOG_WARNING("client", x); } while (0)

#define KPOC_LOGD(x...) do { KLOG_DEBUG("client", x); } while (0)

定义log宏。 默认kernel log为最低等级3 可以使用

void klog_init(void);

int  klog_get_level(void);

void klog_set_level(int level);  设置输出等级

3:如果没有看到输出日志可能selinux 权限问题 需要使用security_setenforce(false)。

static const struct selinux_opt seopts_prop[] = {

{ SELABEL_OPT_PATH, "/property_contexts" },

{ SELABEL_OPT_PATH, "/data/security/current/property_contexts" },

{ 0, NULL }

};

struct selabel_handle* selinux_android_prop_context_handle(void)

{

int policy_index = selinux_android_use_data_policy() ? 1 : 0;

struct selabel_handle* sehandle = selabel_open(SELABEL_CTX_ANDROID_PROP,

&seopts_prop[policy_index], 1);

if (!sehandle) {

ALOGD("SELinux:  Could not load property_contexts:  %s\n",

strerror(errno));

return NULL;

}

ALOGD("SELinux: Loaded property contexts from %s\n", seopts_prop[policy_index].value);

return sehandle;

}

void selinux_init_all_handles(void)

{

sehandle = selinux_android_file_context_handle();

selinux_android_set_sehandle(sehandle);

sehandle_prop = selinux_android_prop_context_handle();

}

static void selinux_initialize(void)

{

selinux_init_all_handles();

security_setenforce(false);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值