Как я могу записывать журналы LMS в файл в стеке разработчиков Open edX?

Open edX использует для записи файлов журналов на /edx/var/log, но в экземпляре докера LMS все папки по этому пути пусты, и единственный файл, который я нашел («tracking.log»), тоже пуст.

Я вижу вывод журналов с помощью команды make lms-logs в devstack, но я хочу, чтобы файлы журналов записывались на диск, как это было бы в производственной среде.

Я использую hawthorn версию и еще не делал никаких изменений.

Как я могу включить это?


person francadaval    schedule 03.09.2019    source источник


Ответы (4)


Если я не ошибаюсь, Open edX devstack не записывает файлы журналов в /edx/var/log поддержку. И rsylog тоже не работает на контейнерах.

Если вы действительно хотите это сделать, есть хитрый способ включить его с помощью пользовательских изменений в нескольких местах. До этого,

Как вы знаете, любые изменения в контейнерах не сохраняются. После перезапуска контейнеров вам придется снова запустить rsylog

Сначала запустите rsylog в контейнере lms

make lms-shell
service rsyslog status
service rsyslog start

Затем проверьте, включен ли сокет прослушивания журнала в папке /dev внутри контейнера LMS.

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 и вы увидите,

введите здесь описание изображения

person Isanka Wijerathne    schedule 03.09.2019

Настоятельно не рекомендуется использовать Devstack для производственной среды. он нестабилен и предназначен только для разработки. Таким образом, вы можете настройте собственный экземпляр openx, после чего вы сможете получить доступ к файлам журнала в разделе /edx/var/logs/. но если вы уверены в использовании Devstack, вы можете найти сообщения журнала следующим образом:

docker-compose logs --no-color --tail=1000 CONTAINER_NAME > logs.txt
person mahyard    schedule 03.09.2019
comment
Я не хочу использовать devstack для производственной среды, я просто хочу, чтобы файлы журналов записывались в /edx/var/log, как в производственной среде. - person francadaval; 03.09.2019

@Mahyar Damavand, есть ли способ записать эти журналы в Elasticsearch?

person Oksana B    schedule 19.09.2019

Добавьте это в настройки (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']
person Luis Moreno    schedule 19.09.2019