如何将LMS日志写入Open edX devstack中的文件?

时间:2019-09-03 06:36:39

标签: devstack openedx edx

Open edX用于在/edx/var/log上写入日志文件,但在LMS docker实例中,此路径中的所有文件夹均为空,并且我找到的唯一文件(“ tracking.log”)也为空。

我可以在devstack上看到用make lms-logs命令输出的日志,但是我希望将日志文件写在磁盘上,就像在生产环境中那样。

我正在运行hawthorn版本,但尚未进行任何更改。

如何启用此功能?

4 个答案:

答案 0 :(得分:1)

如果我没记错,Open edX不会devstack支持下记录日志文件。并且/edx/var/log也没有在容器上运行。

如果您确实想这样做,可以通过一种棘手的方法在多个位置进行自定义更改来启用它。在此之前,

您知道容器中的任何更改都不是持久的。重新启动容器后,您必须重新启动rsylog

首先, 在rsylog容器中开始rsylog

lms

然后检查LMS容器内make lms-shell service rsyslog status service rsyslog start 文件夹中的日志侦听套接字是否已启用。

/dev

如果可以看到ls /dev/log -l ,则必须对/dev/log文件进行一些更改才能启用日志记录。

edx-platform/lms/envs/devstack_docker.py

然后在LMS容器中创建空的日志文件

from openedx.core.lib.logsettings import get_logger_config



LOCAL_LOGLEVEL = "INFO"
SERVICE_VARIANT = os.environ.get('SERVICE_VARIANT', None)
LOGGING_ENV = 'sandbox'
LOG_DIR = "/edx/var/log/edx"

LOGGING = get_logger_config(LOG_DIR,
                            logging_env=LOGGING_ENV,
                            local_loglevel=LOCAL_LOGLEVEL,
                            service_variant=SERVICE_VARIANT)

现在您可以查看日志/edx/var/log/edx/lms/edx.org /edx/var/log/edx/cms/edx.org /edx/var/log/tracking/tracking.log ,您将看到

enter image description here

答案 1 :(得分:0)

强烈不建议在生产环境中使用Devstack。它是不稳定的,仅用于开发目的。因此,您可以setup a native openedx instance,然后可以访问/edx/var/logs/下的日志文件。但是如果您确定要使用Devstack,则可以通过以下方式找到日志消息:

docker-compose logs --no-color --tail=1000 CONTAINER_NAME > logs.txt

答案 2 :(得分:0)

@Mahyar Damavand,有什么方法可以将日志写入Elasticsearch?

答案 3 :(得分:0)

将此添加到设置(lms / envs / devstack_docker.py)

LOGGING['handlers']['tracking'] = {
    'level': 'DEBUG',
    'class': 'logging.FileHandler',
    'filename': '/edx/var/log/tracking/tracking.log',
    'formatter': 'raw',
}

LOGGING['loggers']['tracking']['handlers'] = ['tracking']
相关问题