Journalctl将消息按组记录吗?

时间:2018-06-20 12:25:09

标签: python logging timestamp json-rpc systemd-journald

因此,在我们的机器上,我们发现了一些奇怪的东西。我们的服务正常记录,但是这些消息似乎被分组为特定大小的数据包。例如,我们服务的一条命令在日志中仅生成1行。另一个命令生成大约5行。

使用journalctl -u服务-f,仅在单行足够多的情况下显示单行,而在调用该命令后,总是显示5行的消息。考虑以下示例:

我调用了短命令4次,Journalctl中没有任何显示。然后,我调用更长的命令,短命令的所有4个条目以及新的更长的命令将立即显示。但是,即使我每隔一秒就发送一次调用,它们都具有完全相同的时间戳(影响写入速度)!

[712708.862606] <hostname> <custom_service>[1020]: keys finished
[712708.902052] <hostname> <custom_service>[1020]: keys finished
[712708.902409] <hostname> <custom_service>[1020]: keys finished
[712708.902717] <hostname> <custom_service>[1020]: keys finished
[712708.903025] <hostname> <custom_service>[1020]: ERROR:JSONRPCTCP:Error calling handler db.keys
[712708.903377] <hostname> <custom_service>[1020]: ERROR:JSONRPCTCP:Request: {"jsonrpc": "2.0", "method": "db.keys", "id": "9fc6e420-4d6a-4654-a439-5c89fb4839a4"}
[712708.903730] <hostname> <custom_service>[1020]: ERROR:JSONRPCTCP:Traceback (most recent call last):
[712708.904100] <hostname> <custom_service>[1020]:   File "/opt/<product>/lib/python2.7/site-packages/<service>/server.py", line 321, in parse_call
[712708.904417] <hostname> <custom_service>[1020]:     response = handler(*params, **kwargs)
[712708.904729] <hostname> <custom_service>[1020]: TypeError: keys() takes at least 2 arguments (1 given)

这对于调试很棘手,因为您不能真正依赖实际发生时显示的消息。我在这里想念什么?有什么方法可以强制这些日志消息在实际发生时显示在journalctl中吗?

1 个答案:

答案 0 :(得分:0)

最终成为实际的python服务。 Python通常以缓冲模式运行,该模式将日志消息分批传递给日记。使用-u,您可以将python设置为unbuffered,从而在很大程度上解决了该问题。

更多内容请点击此处:https://unix.stackexchange.com/questions/285419/systemd-python-service-not-sending-all-output-to-syslog