未在docker中生成的日志撰写

时间:2016-07-13 06:37:47

标签: python logging docker docker-compose

我在开发环境中使用docker compose。 我的docker撰写文件是,

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

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

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

我致电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
            }
        }
    )

当前的设置,完全适用于我的ubuntu机器,但是一旦我docker-compose up sudo docker-compose.yaml,我就会在docker容器内部生成日志。 我对docker-compose很陌生,我错过了Value的一些设置吗?感谢。

0 个答案:

没有答案