伐木没有向上传播

时间:2019-02-07 20:25:15

标签: python django logging

我有一个django项目(利用芹菜),我正在尝试设置日志记录拱门。

我希望对Django的主要请求在一个日志文件中,而关于芹菜任务的日志在另一个日志文件中。

我已经定义了以下内容,但是我没有获取internals.tasks.cortex的日志。我的想法是我将记录器设置为内部组件,由于传播会捕获internals.tasks.cortex?但事实并非如此。但是,它总是输出到根记录器!

├── internals
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── celery.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   └── __init__.py
│   ├── models.py
│   ├── tasks
│   │   ├── __init__.py
│   │   ├── cortex.py
│   │   ├── setup.py
│   │   └── submission.py
│   └── views.py
├── logs
├── manage.py
└── xplorioc
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

settings.py

# # Logging configuration
LOGLEVEL = os.environ.get('LOGLEVEL', 'DEBUG').upper()
LOGGING_CONFIG = None
CUSTOM_LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'loggers': {
        '': {
            'level': LOGLEVEL,
            'handlers': ['console', 'root'],
        },
        'internals': {
            'level': LOGLEVEL,
            'handlers': ['console', 'internals'],
            'propagate': False
        }
   },
    'formatters': {
        'basic': {
            'format': '%(asctime)s %(name)s / %(levelname)s / %(message)s',
            'datefmt': '%Y/%m/%d %H:%M:%S',
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'basic',
        },
        'root': {
            'level': LOGLEVEL,
            'formatter': 'basic',
            'class': 'logging.handlers.RotatingFileHandler',
            'maxBytes': 1024 * 1024 * 1,
            'backupCount': 0,
            'filename': BASE_DIR + '/logs/root.log',
        },
        'internals': {
            'level': LOGLEVEL,
            'formatter': 'basic',
            'class': 'logging.handlers.RotatingFileHandler',
            'maxBytes': 1024 * 1024 * 1,
            'backupCount': 0,
            'filename': BASE_DIR + '/logs/internals.log',
        }
    }
}
logging.config.dictConfig(CUSTOM_LOGGING)

cortex.py

from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)

def test():
    logger.debug('I only go to the root logger...')

更新--------

奇怪的是,如果我在cortex.py中添加以下内容:

logger = get_task_logger(__name__)

print(logger.name)
print(logger.parent.name)
print(logger.parent.parent.name)

它打印:

internals.tasks.cortex
celery.task
celery
2019/02/07 20:38:11 internals.tasks.cortex / DEBUG / I only go to the root logger...

所以,问题是,为什么路径根部从内部结构转换到芹菜?!

0 个答案:

没有答案