打日志时间格式%d()有问题

发布于 2021-11-15 07:20:04 字数 1067 浏览 797 评论 15

zlog版本:1.2.5。

发现在规则里面只加一个打印时间格式(%d())是可以显示当前日期时间,再加第二个带有%d()的规则就显示不出日期时间了。函数如下:

#include <stdio.h>
#include "zlog.h"

int main(int argc, char **argv)
{
    int rc; 
    zlog_category_t *c; 

    rc = zlog_init("log.conf");
    if (rc) {
        printf("init failedn");
        return -1; 
    }   

    c = zlog_get_category("my_cat");
    if (!c) {
        printf("get cat failn");
        zlog_fini();
        return -2; 
    }   

    zlog_debug(c, "debug 1");
    zlog_info(c, "info 2");

    zlog_fini();

    return 0;  
}
规则文件:

[formats]
simple = "%d(%m-%d %T) %V [%p:%F:%L(%U)] %m%n"

[rules]
my_cat.INFO >stdout; simple
my_cat.=debug >stdout
屏蔽最后一行,则执行结果是:

11-17 17:05:03 INFO [21336:zlog_test.c:23(main)] info 2

不屏蔽则结果是:

2012-11-17 17:05:21 DEBUG [21338:zlog_test.c:22] debug 1
 INFO [21338:zlog_test.c:23(main)] info 2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(15

秋意浓 2021-11-19 07:29:46

把测试程序也贴下。。实在没想出来为啥。。。

别低头,皇冠会掉 2021-11-19 07:29:41

我用1.2.6版尝试了下无问题。。

能改下你的配置试试看没

simple = "%d.%us %V [%F:%L(%U)] %m%n"

把微秒数打出来试试看。。

奢华的一滴泪 2021-11-19 07:29:41

把测试程序也贴下。。实在没想出来为啥。。。

绝影如岚 2021-11-19 07:29:11

我用1.2.6版尝试了下无问题。。

能改下你的配置试试看没

simple = "%d.%us %V [%F:%L(%U)] %m%n"

把微秒数打出来试试看。。

南冥有猫 2021-11-19 07:28:36

什么叫一段时间没有变化?%d是“2012-11-20 00:27:14”这样的格式,n条日志可能是在同一秒生成的,时间串一样是有可能的啊

后知后觉 2021-11-19 07:27:16

回复
可能我描述的不够准确,准确来讲,就是在控制台打印的时间几分钟都不变,但文件里面的时间打印都是实时更新的。控制台的时间也不是完全不变,而是每隔十多分钟改变一次,至于时间间隔是否固定,未作测试。

私藏温柔 2021-11-19 07:25:08

加上带有时间的打印的话,控制台打印的时间一段时间内不会变化,过了一段时间后又会更新,但仍然不变,由此循环。而文件里面的打印时间却是一直变化的。我的配置是:

[formats]
simple = "%d %V [%F:%L(%U)] %m%n"

[rules]
my_cat.INFO >stdout; simple
*.*     "zlog_test.log", 200KB * 10 ~ "zlog_test-%d(%Y%m%d).#2s.log"

小瓶盖 2021-11-19 07:18:56

能贴下你的配置文件吗?

筱武穆 2021-11-19 07:12:56

回复
不知道怎么回事,刚才重新运行程序,又没问题了。循环转存运行很正常。

刘备忘录 2021-11-19 06:51:51

仔细检查了那段代码,没看出有问题,就是动态解析转档文件名

浅沫记忆 2021-11-19 06:48:50

更新了新版本,又发现了个问题。如果加上rotate,当文件发生转存时会产生崩溃。用gdb跟踪了下,堆栈信息如下:

Program received signal SIGSEGV, Segmentation fault.
zlog_rotater_parse_archive_path (a_rotater=0x8073230) at rotater.c:392
392            if (*(p+nread) == 'r') {
Missing separate debuginfos, use: debuginfo-install glibc-2.14.90-24.fc16.7.i686
(gdb) bt
#0  zlog_rotater_parse_archive_path (a_rotater=0x8073230) at rotater.c:392
#1  zlog_rotater_lsmv (archive_max_count=5, archive_path=0x8093e6c "zlog.log.#r",
    base_path=0x8093a58 "zlog.log", a_rotater=0x8073230) at rotater.c:446
#2  zlog_rotater_rotate (a_rotater=0x8073230, base_path=0x8093a58 "zlog.log", msg_len=56,
    archive_path=0x8093e6c "zlog.log.#r", archive_max_size=10240, archive_max_count=5, reopen_fd=0x8093e60,
    reopen_flags=1089, reopen_perms=384) at rotater.c:573
#3  0xb7fd6421 in zlog_rule_output_static_file_rotate (a_rule=0x8092a28, a_thread=0x8094ef8) at rule.c:169
#4  0xb7fd88ac in zlog_rule_output (a_rule=0x8092a28, a_thread=0x8094ef8) at rule.c:943
#5  0xb7fd09c4 in zlog_category_output (a_category=0x8094aa0, a_thread=0x8094ef8) at category.c:240
#6  0xb7fde27f in zlog (category=0x8094aa0, file=0x80487a4 "zlog_test.c", filelen=11, func=0x80487b8 "main",
    funclen=4, line=24, level=20, format=0x80487b0 "debug 2") at zlog.c:852
#7  0x08048684 in main ()
(gdb)

鹤舞 2021-11-19 06:04:27

楼主解决了没?这是我目前发现的最大的问题,其他的还好。呵呵!

醉酒的小男人 2021-11-19 05:24:45

楼主解决了没?这是我目前发现的最大的问题,其他的还好。呵呵!

悲喜皆因你 2021-11-19 05:13:37

大致想出来是什么地方有问题了,缓存有效性的问题。

醉生梦死 2021-11-18 13:51:35

下周去看看。。。时间这块还有我漏想的地方呀。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文