在多线程中使用 zlog 的 mdc 功能是否需要在每个线程都调用 zlog_put_mdc ??

我可以不取名吗 发布于 2016/09/18 15:09
阅读 467
收藏 0

@难易 老师:

你好,想跟你请教个问题:

因为项目的需求,需要每个进程将日志输出到单独的日志文件,本来想用syslog的,但是没看到要怎么实现这个功能。后来看到了难易老师的 zlog 有 mdc 这个功能,感觉应该能实现需求的,但是 zlog 使用手册中提到"MDC是每个线程独有的“,我在使用过程中也确实发现单个线程中设置的 mdc 只能给这个线程用,其他的线程会提示找不到 key 。

所以,现在想问一个问题:在多线程中使用 zlog 的 mdc 功能是否需要在每个线程都调用 zlog_put_mdc ??

加载中
0
难易
难易
你是要分进程还是线程?简单点就是在文件名中包含pid或tid
0
我可以不取名吗

引用来自“难易”的评论

你是要分进程还是线程?简单点就是在文件名中包含pid或tid

@难易 老师

您好!

我现在的应用场景是:后台需要起多个相同的单独的进程,不是父子进程的关系,每个进程将日志输出到单独的日志文件中,这个程序是多线程的。单个进程的主线程中调用了zlog_put_mdc,但是其他子线程不能直接使用这个mdc的值。我的解决方法是将mdc的值赋给一个全局变量,然后弄了个接口调zlog_put_mdc,每个子线程都调一次这个接口。

您说的这个在文件名中包含pid或tid要怎么实现呢?是在配置文件中加上某个配置吗?还是设置mdc的时候有什么技巧?麻烦您了?

0
难易
难易

引用来自“难易”的评论

你是要分进程还是线程?简单点就是在文件名中包含pid或tid

引用来自“我可以不取名吗”的评论

@难易 老师

您好!

我现在的应用场景是:后台需要起多个相同的单独的进程,不是父子进程的关系,每个进程将日志输出到单独的日志文件中,这个程序是多线程的。单个进程的主线程中调用了zlog_put_mdc,但是其他子线程不能直接使用这个mdc的值。我的解决方法是将mdc的值赋给一个全局变量,然后弄了个接口调zlog_put_mdc,每个子线程都调一次这个接口。

您说的这个在文件名中包含pid或tid要怎么实现呢?是在配置文件中加上某个配置吗?还是设置mdc的时候有什么技巧?麻烦您了?

文件名中有pid的通配符%p啊,不需要每个线程都打
我可以不取名吗
谢谢您啦,难易老师。
返回顶部
顶部