【问题标题】:How can I write LMS logs to file in Open edX devstack?如何将 LMS 日志写入 Open edX devstack 中的文件?
【发布时间】:2019-09-20 00:02:33
【问题描述】:

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

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

我正在运行hawthorn 版本,我还没有进行任何更改。

如何启用此功能?

【问题讨论】:

    标签: devstack openedx edx


    【解决方案1】:

    如果我没记错的话,Open edX 确实 devstack 不会在 /edx/var/log 支持中记录日志文件。 rsylog 也没有在容器上运行。

    如果您真的想这样做,可以通过在多个地方进行自定义更改来启用它。在此之前,

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

    首先, 在lms 容器中启动rsylog

    make lms-shell
    service rsyslog status
    service rsyslog start
    

    然后检查LMS容器内/dev文件夹中的日志监听套接字是否启用。

    ls /dev/log -l
    

    如果您可以看到/dev/log,那么您必须在您的edx-platform/lms/envs/devstack_docker.py 文件中添加一些更改以启用日志记录。

    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)
    

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

    /edx/var/log/edx/lms/edx.org
    /edx/var/log/edx/cms/edx.org
    /edx/var/log/tracking/tracking.log
    

    现在您可以查看日志,tail /edx/var/log/edx/lms/edx.org,您会看到,

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我不想将 devstack 用于生产环境,我只想将日志文件写在 /edx/var/log 下,就像在生产环境中一样。
      【解决方案3】:

      @Mahyar Damavand,有没有办法将日志写入 Elasticsearch?

      【讨论】:

        【解决方案4】:

        将此添加到设置 (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']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-04
          • 2013-11-26
          • 1970-01-01
          • 1970-01-01
          • 2012-04-06
          • 2023-03-31
          • 2020-01-02
          相关资源
          最近更新 更多