1

我正在尝试让 Logger 为我的 Django 应用程序工作。我用以下方式调用记录器:

logger = logging.getLogger(__name__)
logger.info("some stuff")

在我的views.py中的一个函数内。

但它不起作用,应该包含日志的文件已创建但没有写入任何内容,这里是设置:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters':{
    'standard': {
        'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
    },
},
'handlers': {
    'file_INFO': {
        'level': 'INFO',
        'class': 'logging.handlers.RotatingFileHandler',
        'filename': os.path.join(BASE_DIR, 'logs/site.logs'),
        'maxBytes': 1024 * 1024 * 15,  # 15MB
        'backupCount': 10,
        'formatter': 'standard',
    },
    'console_INFO': {
        'level': 'INFO',
        'class': 'logging.StreamHandler',
    }
},
'loggers': {
    'INFO': {
        'handlers': ['file_INFO', ],
        'level': 'INFO',
        'propagate': True,
    },
},

}

任何想法 ?

谢谢 !

4

1 回答 1

2

您已将记录器命名为“INFO”,但您已要求提供记录器__name__。所以你使用的记录器不是你想要的。

最好的办法是使用根记录器,如下所示:

LOGGING = {
    ...
    'root': {
        'handlers': ['file_INFO', ],
        'level': 'INFO',
    },
}

所有记录器都将传播到根记录器(除非另有说明),并且此设置足以满足 90% 以上的应用程序。如果你使用 root logger,你也不需要运行getLogger(__name__),你可以简单地用logging.info("some stuff").

于 2016-11-30T11:14:45.083 回答