一起来读源码604-skynet 日志模块

摘要

日志操作,结构比较简单,不多赘述

 

详情

skynet_log.h

skynet_log.c

日志操作

//打开日志
FILE * skynet_log_open(struct skynet_context * ctx, uint32_t handle);
//关闭日志
void skynet_log_close(struct skynet_context * ctx, FILE *f, uint32_t handle);
//输出日志
void skynet_log_output(FILE *f, uint32_t source, int type, int session, void * buffer, size_t sz);

一些辅助函数

//按字节刷入
static void
log_blob(FILE *f, void * buffer, size_t sz) {
    size_t i;
    uint8_t * buf = buffer;
    for (i=0;i!=sz;i++) {
        fprintf(f, "%02x", buf[i]);
    }
}

//打印socket信息
static void
log_socket(FILE * f, struct skynet_socket_message * message, size_t sz) {
    fprintf(f, "[socket] %d %d %d ", message->type, message->id, message->ud);
    if (message->buffer == NULL) {
        const char *buffer = (const char *)(message + 1);
        sz -= sizeof(*message);
        const char * eol = memchr(buffer, '\0', sz);//查找结尾符
	if (eol) {
            sz = eol - buffer;//如果有结尾符,只取到结尾符,其他还回去
        }
	fprintf(f, "[%*s]", (int)sz, (const char *)buffer);
    } else {
        sz = message->ud;
        log_blob(f, message->buffer, sz);
    }
    fprintf(f, "\n");
    fflush(f);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值