我想将stdout和stderr记录到日志文件中,这就是我尝试过的.
app = Flask(__name__)
app.logger.setLevel(logging.INFO) # use the native logger of flask
app.logger.disabled = False
handler = logging.handlers.RotatingFileHandler(
SYSTEM_LOG_FILENAME,
'a',
maxBytes=1024 * 1024 * 100,
backupCount=20
)
formatter = logging.Formatter(\
"%(asctime)s - %(levelname)s - %(name)s: \t%(message)s")
handler.setFormatter(formatter)
app.logger.addHandler(handler)
@app.route('/')
def hello():
return 'Hello World'
if __name__ == '__main__':
app.run()
Run Code Online (Sandbox Code Playgroud)
然后我想在文件中记录控制台输出.如
* Running on http://127.0.0.1:5000/
127.0.0.1 - - [24/May/2013 14:55:14] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [24/May/2013 14:55:14] "GET /favicon.ico HTTP/1.1" 404 -
Run Code Online (Sandbox Code Playgroud)
我能做什么?
mat*_*ata 26
你提到的不是来自烧瓶的记录器的日志消息中,来自 werkzeug的记录,这意味着你还需要您的处理程序添加到该记录器实例,使其工作,如:
log = logging.getLogger('werkzeug')
log.setLevel(logging.INFO)
log.addHandler(handler)
Run Code Online (Sandbox Code Playgroud)
如果你看一下werkzeug如何初始化它的记录器,你会发现只有在尚未设置记录时它才会添加一个默认处理程序.这意味着如果你在wekzeug之前设置它,它将不会使用默认值,StreamHandler而是使用你提供的处理程序.