我在开发环境中使用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
的一些设置吗?感谢。