C语言日志类库 zlog 使用指南(第五章 配置文件)

第五章 配置文件

zlog库的大多数操作都依赖于配置文件:在哪里输出日志、如何轮转日志文件、如何格式化输出等。配置文件使用专用的DSL(领域特定语言)来控制库的操作。以下是一个示例的zlog.conf配置文件:

# 注释
[global]
strict init = true
reload conf period = 1M
buffer min = 1024
buffer max = 2MB
rotate lock file = /tmp/zlog.lock
default format = "%d.%ms %-6V (%c:%F:%L) - %m%n"
file perms = 600
fsync period = 1K

[levels]
TRACE = 10
CRIT = 130, LOG_CRIT

[formats]
simple = "%m%n"
normal = "%d(%F %T) %m%n"

[rules]
default.* >stdout; simple
*.* "%12.2E(HOME)/log/%c.log", 1MB*12; simple
my_.INFO >stderr;
my_cat.!ERROR "/var/log/aa.log"
my_dog.=DEBUG >syslog, LOG_LOCAL0; simple
my_mice.* $user_define;

配置文件的结构如下:

1. [] 表示一个部分的开始,各部分的顺序是固定的,按照 global-levels-formats-rules 的顺序。

关于单位的注意事项:

  • 当需要指定内存大小或大数字时,可以使用常见的单位形式,如 1k、5GB、4M 等:
  • 1k 表示 1000 字节
  • 1kb 表示 1024 字节
  • 1m 表示 1000000 字节
  • 1mb 表示 1024*1024 字节
  • 1g 表示 1000000000 字节
  • 1gb 表示 1024*1024*1024 字节
  • 单位不区分大小写,所以 1GB、1Gb、1gB 是一样的。

关键配置项解释:

[global] 部分:
  • strict init:设为 true 时,严格初始化。
  • reload conf period:配置文件重新加载周期。
  • buffer minbuffer max:缓冲区的最小和最大大小。
  • rotate lock file:日志旋转锁文件的位置。
  • default format:默认的日志输出格式。
  • file perms:文件权限设置。
  • fsync period:同步周期。
[levels] 部分:
  • 定义日志级别,如 TRACE 和 CRIT 等。
[formats] 部分:
  • 定义日志输出格式,如 simple 和 normal 等。
[rules] 部分:
  • 定义日志输出规则。例如:
  • default.* >stdout; simple:默认情况下,所有日志输出到标准输出,使用 simple 格式。
  • my_dog.=DEBUG >syslog, LOG_LOCAL0; simple:将 my_dog 分类的 DEBUG 日志输出到 syslog,使用 simple 格式。

通过这些配置,用户可以灵活地控制 zlog 库的日志输出行为。

5.1 全局

以下是 zlog 用户指南中关于全局配置部分的总结:

全局(Global)配置节

全局配置节以 [global] 开头,这一部分可以省略。每个配置项的语法是 (key) = (value)

1. strict init
  • strict init = true:zlog_init() 会严格检查所有格式和规则的语法,任何错误都会导致 zlog_init() 失败并返回 -1。
  • strict init = false:zlog_init() 会忽略格式和规则的语法错误。默认值为 true。
2. reload conf period
  • 自动重新加载配置文件的周期(以每个进程的日志次数为单位)。到达指定次数后,自动调用 zlog_reload()。
  • 默认值是 0,表示从不自动重新加载。
3. buffer min 和 buffer max
  • 每个线程的日志缓冲区大小:
  • buffer min:初始化时分配的缓冲区大小。
  • buffer max:扩展缓冲区的最大值。超过此值的日志内容会被截断。
  • 默认:buffer min是 1K,buffer max是 2MB。
4. rotate lock file
  • 用于在多进程环境中安全地旋转日志文件的锁文件路径。
  • 默认值为 self,表示使用配置文件本身作为锁文件。
5. default format
  • 未指定格式的规则使用的默认格式。
  • 默认值:"%d %V [%p:%F:%L] %m%n",输出示例:2012-02-14 17:03:12 INFO [3758:test_hello.c:39] hello, zlog
6. file perms
  • 创建日志文件时的文件权限(受用户的 umask 影响)。
  • 默认值为 600,意味着仅用户可以读取和写入。
7. fsync period
  • 每个规则(仅限文件)记录一定次数的日志后,调用 fsync(3) 告诉操作系统立即将数据写入磁盘。
  • 默认值为 0,表示由操作系统自行决定何时刷新输出缓冲区。

示例

  • fsync period 的效果可以显著影响程序的性能和数据安全性。频繁调用 fsync 会大大降低性能,但能确保日志迅速写入磁盘。
$ time ./test_press_zlog 1 10 100000

real	0m1.806s
user	0m3.060s 
sys	 0m0.270s

 

$ wc -l press.log  

1000000 press.log  

 

$ time ./test_press_zlog 1 10 100000 #fsync period = 1K

real	0m41.995s 
user	0m7.920s 
sys	 0m0.990s

 

$ time ./test_press_zlog 1 10 100000 #fsync period = 10K

real	0m6.856s 
user	0m4.360s 
sys	 0m0.550s

通过这些全局配置,您可以根据实际的需求调整 zlog 的行为,以便更好地适应不同的日志处理场景。

5.2 日志级别 (Levels)

  • 定义部分:此部分以 [levels] 开始,允许用户定义应用程序的日志级别。

  • 匹配宏:这些值需要与源文件中的用户定义宏匹配。

  • 语法

    (level string) = (level int), (syslog level

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值