未在 docker compose 中生成的日志

pnv*_*pnv 5 python logging docker docker-compose

我正在为开发环境使用 docker compose。我的 docker compose 文件是,

version: '2'
services:
  mysql_db:
    image: mysql:5.6
    ports:
      - "3310:3306"
    environment:
      MYSQL_ROOT_PASSWORD: some pass
      MYSQL_DATABASE: some db
      MYSQL_USER: some user
      MYSQL_PASSWORD: some pass
  onehop:
    build:
      context: . #current dir as build context
      args:
        mysql_host: 127.0.0.1
        mysql_port: 3306
        mysql_user: onehop
        mysql_passwd: onehop
        mysql_db: onehop
        celery_host: some host
        celery_port: some port
        celery_user: some user
        celery_password: some password
        app_env: SomeDev
    volumes:
      - ../../.:/code
    working_dir: /code/
    environment:
      ONEHOP_ENV: PranavDev6530
      PYTHONUNBUFFERED: 0
    command: bash -c "pip install --upgrade pip && pip install -r requirements.txt && python manage.py runserver updatedb"
    ports:
      - "5000:5000"
    depends_on:
      - mysql_db
Run Code Online (Sandbox Code Playgroud)

我使用了一个查找日志配置的函数,如果已经配置,则提供日志实例,如下所示,

def get_logger(logger_name=None):
    global __logging_configured
    if not __logging_configured:
        logging.config.dictConfig(CONFIG.LOGGING_CONFIG)
        __logging_configured = True
    logger = logging.getLogger(logger_name or CONFIG.DEFAULT_LOGGER_NAME)
    return logger
Run Code Online (Sandbox Code Playgroud)

我打电话get_logger('logger name')去拿记录器。

CONFIG.LOGGING_CONFIG 是一个字典如下,

LOGGING_CONFIG = dict(
        version=1,
        formatters={
            'compact': {
                'format': '%(asctime)s [%(levelname)-8.8s] %(name)-10.10s : %(message)s'
            },
            'verbose': {
                'format': '%(asctime)s [%(levelname)-8.8s] %(name)-8.8s [%(filename)-15.15s:%(lineno)-3.3s]: %(message)s'
            },
            'err_report': {
                'format': '%(asctime)s\n%(message)s'
            }
        },
        handlers={
            'slack_jabber': {
                'class': 'contrib.slacker.SlackHandler',
                'url': 'https://hooks.slack.com/services/lol',
                'channel': 'somedev',
                'username': 'crash_jabber',
                'icon_emoji': ':ghost:'
            },
            'cron': {
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'formatter': 'verbose',
                'level': 'DEBUG',
                'filename': '%s/%s' % (pwd, '../logs/cron/cron.log'),
                'interval': 1,
                'when': 'midnight',
                'encoding': 'utf8'
            },
            'api': {
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'formatter': 'verbose',
                'level': 'DEBUG',
                'filename': '%s/%s' % (pwd, '../logs/api/api.log'),
                'interval': 1,
                'when': 'midnight',
                'encoding': 'utf8'
            },
            'critical_err': {
                'class': 'logging.handlers.SMTPHandler',
                'formatter': 'err_report',
                'mailhost': ("localhost", 25),
                'fromaddr': 'no-reply@company.co',
                'toaddrs': [
                    'lol@lol.com'
                ],
                'subject': '[Dev] Onehop : Something bad happened'
            },
            'default': {
                'class': 'logging.StreamHandler',
                'formatter': 'verbose'
            },
        },
        loggers={
            '': {
                'handlers': ['default'],
                'level': 'DEBUG'
            },
            'cron': {
                'handlers': ['cron'],
                'level': 'DEBUG',
                'propagate': False
            },
            'api': {
                'handlers': ['api', 'default'],
                'level': 'DEBUG',
                'propagate': False
            },
            'crash': {
                'handlers': ['critical_err', 'api', 'slack_jabber'],
                'level': 'ERROR',
                'propagate': False
            }
        }
    )
Run Code Online (Sandbox Code Playgroud)

当前设置在我的 ubuntu 机器上完美运行,但不知何故,一旦我docker-compose up使用sudo. 我对 docker-compose 很陌生,我是否缺少一些设置docker-compose.yaml?谢谢。