打日志时间格式%d()有问题
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
把测试程序也贴下。。实在没想出来为啥。。。
我用1.2.6版尝试了下无问题。。
能改下你的配置试试看没
simple = "%d.%us %V [%F:%L(%U)] %m%n"
把微秒数打出来试试看。。
把测试程序也贴下。。实在没想出来为啥。。。
我用1.2.6版尝试了下无问题。。
能改下你的配置试试看没
simple = "%d.%us %V [%F:%L(%U)] %m%n"
把微秒数打出来试试看。。
什么叫一段时间没有变化?%d是“2012-11-20 00:27:14”这样的格式,n条日志可能是在同一秒生成的,时间串一样是有可能的啊
回复
可能我描述的不够准确,准确来讲,就是在控制台打印的时间几分钟都不变,但文件里面的时间打印都是实时更新的。控制台的时间也不是完全不变,而是每隔十多分钟改变一次,至于时间间隔是否固定,未作测试。
加上带有时间的打印的话,控制台打印的时间一段时间内不会变化,过了一段时间后又会更新,但仍然不变,由此循环。而文件里面的打印时间却是一直变化的。我的配置是:
能贴下你的配置文件吗?
回复
不知道怎么回事,刚才重新运行程序,又没问题了。循环转存运行很正常。
仔细检查了那段代码,没看出有问题,就是动态解析转档文件名
更新了新版本,又发现了个问题。如果加上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)
楼主解决了没?这是我目前发现的最大的问题,其他的还好。呵呵!
楼主解决了没?这是我目前发现的最大的问题,其他的还好。呵呵!
大致想出来是什么地方有问题了,缓存有效性的问题。
下周去看看。。。时间这块还有我漏想的地方呀。。