如何将所有警告异常(完整堆栈跟踪)记录到文件中

时间:2016-07-08 22:44:28

标签: python apache logging flask flask-restful

所以我正在尝试使用flask来构建一个非常好的API,由centos(httpd)上的apache提供。

基本的API调用工作得很好但是我没有在更高级的方面取得很大进展,因为每次失败我只得到一个HTTP 500响应,这对于故障排除是完全没用的,我没有服务器端日志来查看。我真的试图通过反复试验来解决这个问题,这让我一头扎进墙里。

为了在这个项目上取得任何进展,我需要设置一些基本的错误记录,但我不了解文档或现有的线程。这完全超出了我的想法。

我想要做的是让烧瓶将我的应用程序生成的所有警告和异常写入特定文件(它可以放在app目录中以保持简单)。

我正在寻找最简单,最简单,最不易思索的方式来做这个...建议?

这是我的应用程序的一个非常简化的版本...它显示了我使用的基本结构,所以请使用它作为参考。

    from flask import Flask, jsonify, request
    from flask_restful import reqparse, abort, Resource, Api

    app = Flask(__name__)
    api = Api(app)

    class fetchTicket(Resource):
        def post(self):

        request_data = request.get_json(force=True)

        r_ticket_id = request_data['ticket_id']

        return jsonify(ticket_id=r_ticket_id)


    api.add_resource(fetchTicket, '/ticket/fetch')

    if __name__ == "__main__":
        import logging
        from logging.handlers import FileHandler

        app.debug = True
        file_handler = FileHandler("/var/www/project_folder/error.log")
        file_handler.setLevel(logging.DEBUG)
        app.logger.addHandler(file_handler)
        app.run()

但是当我运行上面的代码时,没有创建error.log文件。我不确定我做错了什么。

注意:我确实设置了文件夹权限,以便apache用户有权写入日志文件应该到达的目录,按照http://fideloper.com/user-group-permissions-chmod-apache但它没有帮助所以我不认为它是权限问题。

1 个答案:

答案 0 :(得分:0)

在记录日志时,您需要使用额外的kwarg显式地包括堆栈跟踪。

logger.exception('Probably something went wrong', extra={'stack': True})