如何将 LMS 日志写入 Open edX devstack 中的文件?
How can I write LMS logs to file in Open edX devstack?
Open edX 用于在 /edx/var/log
上写入日志文件,但在 LMS docker 实例中,此路径中的所有文件夹都是空的,并且我找到的唯一文件('tracking.log `) 也是空的。
我可以在 devstack 上使用 make lms-logs
命令看到日志输出,但我希望将日志文件写入磁盘,就像在生产环境中一样。
我是 运行 hawthorn
版本,我还没有做任何更改。
我该如何启用它?
强烈不建议在生产环境中使用 Devstack。它不稳定,仅用于开发目的。所以你可以 setup a native openedx instance 然后你可以访问 /edx/var/logs/
下的日志文件。但如果您确定要使用 Devstack,您可能会这样找到日志消息:
docker-compose logs --no-color --tail=1000 CONTAINER_NAME > logs.txt
如果我没记错的话,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
你会看到,
@Mahyar Damavand,有什么方法可以将该日志写入 Elasticsearch 吗?
将此添加到设置 (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']
Open edX 用于在 /edx/var/log
上写入日志文件,但在 LMS docker 实例中,此路径中的所有文件夹都是空的,并且我找到的唯一文件('tracking.log `) 也是空的。
我可以在 devstack 上使用 make lms-logs
命令看到日志输出,但我希望将日志文件写入磁盘,就像在生产环境中一样。
我是 运行 hawthorn
版本,我还没有做任何更改。
我该如何启用它?
强烈不建议在生产环境中使用 Devstack。它不稳定,仅用于开发目的。所以你可以 setup a native openedx instance 然后你可以访问 /edx/var/logs/
下的日志文件。但如果您确定要使用 Devstack,您可能会这样找到日志消息:
docker-compose logs --no-color --tail=1000 CONTAINER_NAME > logs.txt
如果我没记错的话,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
你会看到,
@Mahyar Damavand,有什么方法可以将该日志写入 Elasticsearch 吗?
将此添加到设置 (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']