Open edX用于在/edx/var/log
上写入日志文件,但在LMS docker实例中,此路径中的所有文件夹均为空,并且我找到的唯一文件(“ tracking.log”)也为空。
我可以在devstack上看到用make lms-logs
命令输出的日志,但是我希望将日志文件写在磁盘上,就像在生产环境中那样。
我正在运行hawthorn
版本,但尚未进行任何更改。
如何启用此功能?
答案 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
,您将看到
答案 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']