移植zlog开发日志。
git clone https://github.com/HardySimpson/zlog.git //下载源码包
cd zlog //进入工程目录
mkdir build_linux build_arm //创建文件夹用于存放工程输出内容
vim src/makefile //修改makefile中的PREFIX为自己创建的目录build_arm,如下所示,
# Installation related variables
PREFIX?=../build_arm
INCLUDE_PATH=include
LIBRARY_PATH=lib
BINARY_PATH=bin
INSTALL_INCLUDE_PATH= $(PREFIX)/$(INCLUDE_PATH)
INSTALL_LIBRARY_PATH= $(PREFIX)/$(LIBRARY_PATH)
INSTALL_BINARY_PATH= $(PREFIX)/$(BINARY_PATH)
make //默认gcc编译,若需要交叉编译指定编译工具链即可:make CC=arm-linux-xxx-gcc
在该处可能存在交叉编译失败的情况,暂时未找到原因,可以使用自动配置版本编译。
make install //将生成的库和工具拷贝至自己创建的目录
自动配置版本https://github.com/bmanojlovic/zlog
cd zlog //进入工程目录
chmod +x autogen.sh
./autogen.sh
如果出现不能识别的函数错误,或报"Syntax error: "(" unexpected 的错误,请取消dash:
dpkg-reconfigure dash
选择 no ;然后再执行:./autogen.sh
CC=arm-linux-gnueabihf-gcc ./configure --prefix=/opt/embedded/zlog --host=arm-linux-gnueabihf
执行:make
可能会出现以下错误:
./.libs/libzlog.so: undefined reference to `rpl_realloc'
这时,我们要改 makefile 文件,cd 到 src 文件下,修改 makefile:将 rpl_realloc 替换为 realloc,保存,执行:
make clean
make
make install
#include "../includess/zlog.h"
int main(int argc, char *argv[])
{
int rc; rc = dzlog_init("/etc/zlog.conf", "my_class");
//指定配置文件路径及类型名 初始化zlog
if (rc)
{
printf("init failed\n");
return -1;
}
dzlog_info("hello, zlog info"); //打印普通信息
dzlog_error("hello, zlog error");//打印错误信息
dzlog_warn("hello, zlog warning"); //打印报警信息
dzlog_debug("hello, zlog debug"); //打印调试信息
zlog_fini(); //释放zlog
}
[global]
strict init = true
buffer min = 1024
buffer max = 2MB
rotate lock file = /tmp/zlog.lock
default format = "%d.%us %-6V (%c:%F:%L) - %m%n"
file perms = 600
[rules]
my_class.* >stdout;
my_class.* "/xxx/xxx/log.txt", 1M;
通过zlog-chk-conf对zlog.conf进行语法检查,没有报错如下
#./zlog-chk-conf /etc/zlog.conf
--[/etc/zlog.conf] syntax right