我正在使用uwsgi和nginx运行python flask应用程序。我在记录应用程序模块时遇到问题。如果我单独运行烧瓶应用程序,我可以看到日志格式正确,但在 uwsgi 中,我看到"找不到记录器的处理程序......"并且日志丢失。打印显示正常。有人可以帮助我做错什么吗?
谢谢
我运行 uwsgi 作为
/usr/local/bin/uwsgi --ini /root/uwsgi.ini
# cat /root/uwsgi.ini
[uwsgi]
base=/root/mainapp
app = mainapp
module = %(app)
pythonpath = %(base)
socket = /tmp/mainapp.sock
chmod-socket = 666
callable = app
logto = /var/log/mainapp/app.log
paste-logger = %p
[formatters]
keys: detailed
[handlers]
keys: console
[loggers]
keys: root, module1, module2, module3
[formatter_detailed]
format: %(asctime)s %(name)s:%(levelname)s %(module)s:%(lineno)d: %(message)s
[handler_console]
class: StreamHandler
args: []
formatter: detailed
[logger_root]
level: DEBUG
handlers:
[logger_module1]
level: DEBUG
qualname: module1
handlers: console
[logger_module2]
level: DEBUG
qualname: module2
handlers: console
[logger_module3]
level: DEBUG
qualname: module3
handlers: console
在模块中,我调用
import logging
log = logging.getLogger('module1')
log.info('hello world')
您是否将 Flask 配置为使用记录器?在我的头顶上,这样的事情应该可以工作
app.config['LOG_FILE'] = 'application.log'
# Configure logger.
if not app.debug:
import logging
from logging import FileHandler
file_handler = FileHandler(app.config['LOG_FILE'])
file_handler.setLevel(logging.WARNING)
app.logger.addHandler(file_handler)
看起来我必须先实例化 Flask 的 app.logger 才能做任何事情......这成功了...在 app.logger 上设置 addhandler 和
import logging
import logging.config
shandler = logging.StreamHandler()
shandler.setLevel(logging.DEBUG)
app.logger.addHandler(shandler)
logging.config.fileConfig('logging.conf')