skynet框架应用——使用C编写的流水日志服务

本文详细介绍了一种基于Skynet框架的日志模块实现方法,包括log.so编译、自定义日志服务、参数配置及测试过程。通过C语言编译log.so并结合Lua脚本,实现了灵活的日志级别控制、日志滚动、同步间隔设置等功能。

这个log库是从github上的开源框架中看到的,发现其挺好用,就单独摘出来,作为单独的模块。
该作者的github地址为:https://github.com/xiaozia/metoo

输出的日志格式方便自定义,比如是下面这样:

[INFO] 2020-07-13 05:40:22 [main] [./demo/main.lua:10] start main info test...
[ERROR] 2020-07-13 05:40:22 [main] [./demo/main.lua:11] start main error test...

这个方便写流水日志

一、编译log.so

大家可以把这个开源库clone下来
https://github.com/xiaozia/metoo.git

把lua-log.c单独复制出来,在其相同目录下新建一个makfile文件:
(文章的最后,我会这个demo的文件的下载地址放上来)

CC ?= gcc  
CFLAGS = -g -O2 -Wall -I$(LUA_INC)  
SHARED := -fPIC --shared  

TARGET = log.so  
LUA_CLIB_PATH = ./

#引入lua头文件(根据你安装Lua库时的目录而定)
LUA_INC ?= /home/moon/Documents/skynet_project/3rd/lua

start: $(TARGET)  

$(TARGET) : ./lua-log.c
	$(CC) $(CFLAGS) $(SHARED) $^ -o $@  

clean:  
	rm -fr $(TARGET)  

$(LUA_CLIB_PATH) :  
	mkdir $(LUA_CLIB_PATH)

其中LUA_INC ?=
这里的路径可以填skynet中lua的路径

make

就会看到生成了一个log.so,如果有报错,或者想更详细了解如何用C语言作为skynet的模块,可以看这篇博客:
Skynet服务器框架(七) Lua中调用自定义C库

二、自定义的流水日志服务

log.lua

local skynet = require "skynet"
require "skynet.manager"
local logger = require "log.core"
 
local CMD = {
   
   }

function CMD.start()
	logger.init(tonumber(skynet.getenv("log_level")) or 0,
		tonumber(skynet.getenv("log_rollsize")) or 1024,
		tonumber
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值