1

我正在尝试记录我的 django 应用程序。这工作正常(我在日志文件中看到所有其他日志),除非我尝试记录我的 uWSGI 守护进程。我是使用守护程序的新手,是否有原因导致它以不同方式记录?

我在 uwsgi.yaml 中使用:

env: DJANGO_SETTINGS_MODULE=application.settings
module: application.wsgi
log-master: True
log-syslog: uwsgi
attach-daemon: /opt/application/bin/tornading

这是我在设置模块中的日志记录:

LOGGING = {
    'handlers': {
        'logfile': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': '/var/log/application.log',
            'maxBytes': 1 * 1024 * 1024,
            'backupCount': 2,
            'formatter': 'standard',
        },
    },
    'loggers': {
        'application': {
            'handlers': ['logfile'],
            'level': 'DEBUG',
            'propagate': True,
        },
    }
}

tornading.py 启动一个 IOloop 实例和一个 tornado 消费者:

import logging
import settings
LOGGER = logging.getLogger(__name__)

def main():
    app = tornado.web.Application(BroadcastRouter.urls)
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(port=settings.TORNADO_PORT, address=settings.TORNADO_HOST)
    ioloop = tornado.ioloop.IOLoop.instance()
    consumer = communication.TornadoConsumer(ioloop, BroadcastConnection.on_rabbit_message)
    consumer.connect()

    LOGGER.debug('Hello world')

    ioloop.start()

if __name__ == "__main__":
    main()

我也尝试过LOGGER = logging.getLogger('application'),但仍然没有从 tornading.py 记录

关于为什么这不起作用的任何想法?

4

1 回答 1

1

当您使用 Django 时 - 您不需要配置记录器,因为 Django 在加载时会自行生成。

当您使用 Tornado 时,没有自动配置记录器。尝试手动配置。

import logging.config

logging.config.dictConfig(settings.LOGGING)

也供将来阅读:15.8。logging.config - 日志配置

于 2018-03-27T09:36:05.770 回答