之前在celery中一直用python 自带的 logging ,需求需要按天切分日志,有点蛋疼,谁用谁知道啊,之后上网查了查,可以使用自带的get_task_logger ,话不多说来~
# myapp/tasks.py
from celery.utils.log import get_task_logger
log = get_task_logger(__name__)
@app.task
def add(x, y):
log.info("Calling task add(%d, %d)" % (x, y))
return x + y
@app.task
def substract(x, y):
log.info("Calling task substract(%d, %d)" % (x, y))
return x - y
上面这种写法所有task日志 会打到一个文件,不太好管理,最好每个task分开加载,或者使用python的装饰器实现
日志配置
import logging.config
LOG_CONFIG = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simple': {
# 'datefmt': '%m-%d-%Y %H:%M:%S'
'format': '%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(message)s'
}
},
'handlers': {
'celery': {
# 'level': 'INFO',
# 'class': 'logging.handlers.RotatingFileHandler',
'level': 'DEBUG',
'formatter': 'simple',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': 'your_name.log',
'when': 'midnight'
},
},
'loggers': {
'myapp': {
'handlers': ['celery'],
'level': 'INFO',
'propagate': True,
}
}
}
logging.config.dictConfig(LOG_CONFIG)