Python 日志记录+;Lttng框架日志不可用

Python 日志记录+;Lttng框架日志不可用,python,logging,trace,lttng,Python,Logging,Trace,Lttng,我使用logging+lttng作为日志和跟踪框架,但我无法使用lttng视图查看日志,它只提供日志的路径 我使用下面的例子 Python示例 import lttngust import logging import time def example(): logging.basicConfig() logger = logging.getLogger('my-logger') while True: logger.debug('debug mes

我使用
logging
+
lttng
作为日志和跟踪框架,但我无法使用
lttng视图查看日志,它只提供日志的路径

我使用下面的例子

Python示例

import lttngust
import logging
import time


def example():
    logging.basicConfig()
    logger = logging.getLogger('my-logger')

    while True:
        logger.debug('debug message')
        logger.info('info message')
        logger.warn('warn message')
        logger.error('error message')
        logger.critical('critical message')
        time.sleep(1)


if __name__ == '__main__':
    example()
执行以下命令以启用
lttng

台阶

lttng create
lttng enable-event --python my-logger
lttng start
运行Python脚本:

python test.py
停止跟踪并检查记录的事件:

lttng stop
lttng view //Not working as expected
在运行lttng视图时

vinay@root:~/lttng-traces/auto-20180917-121542/ust/uid/1003/64-bit/index$ lttng view
Trace directory: /home/vinay/lttng-traces/auto-20180917-121542

您在评论中提到,您正在lttng tools 2.10.2上运行。 此版本受Python跟踪代理的错误影响

当用户不是
跟踪
的一部分,并且lttng会话守护进程以root用户身份运行时,该错误使得无法跟踪python应用程序。此要求通常只存在于内核跟踪中。您遇到此错误是因为systemd在启动时启动根lttng会话守护进程

通过以root用户身份登录并杀死root lttng会话守护程序,并以自己的非root用户身份运行会话守护程序,您可以轻松测试是否确实存在此错误,如下所示:

根目录:

pkill lttng-sessiond
作为非root用户:

lttng-sessiond -d
lttng create
lttng enable-event --python my-logger
lttng start
python test.py
...
<ctrl + c>
lttng stop
lttng view
lttng sessiond-d
lttng创建
lttng enable事件——python我的记录器
lttng启动
python test.py
...
lttng停止
lttng视图
如果您现在收到事件,那么您的系统将受到错误的影响。 这个bug已经在2.10版本中修复,并将被移植到Ubuntu软件包中


在更新包之前,您可以将自己添加到
跟踪
组中,或阻止systemd在启动时启动根lttng会话守护程序。

您使用的Python、lttng UST、lttng工具和Babeltrace的版本是什么?还有,你是在哪个发行版和版本上尝试的?我尝试使用了
python
python3
在这种情况下我需要
babeltrace
,如果是,为什么?你有我可以参考的示例吗?是的,你需要babeltrace。Babeltrace由lttng view命令调用。您使用的是我上面列出的软件的哪个版本?@fdeslaur可以使用上面的示例并尝试它。我的版本如下
lttng--version lttng(lttng跟踪控制)2.10.2-KeKriek
我尝试过它。它在我的机器上运行得很好。您使用的发行版和版本是什么?您是否使用发行版软件包安装了lttng工具或从源代码处构建了它?即使在lttng sessiond的pkill之后也没有相同的行为您能否确认根lttng sessiond进程确实已被pkill命令终止?您可以使用
ps aux | grep lttng sessiond
检查是否存在错误。事实上,这不是我清除的错误,我创建了一个新的会话,它工作得非常好:)