3

我正在使用 Python3.4 和 Falcon1.0.0,我正在使用 apache2 为我的 falcon 应用程序提供服务。现在,我想在我的 falcon 应用程序中维护日志。

4

2 回答 2

5

您可以使用以下方式,即在文件“logger.py”中存储以下功能:

import logging
import logging.handlers
import os
from datetime import datetime
import sys

# Logging Levels
# https://docs.python.org/3/library/logging.html#logging-levels
# CRITICAL  50
# ERROR 40
# WARNING   30
# INFO  20
# DEBUG 10
# NOTSET    0


def set_up_logging():
    file_path = sys.modules[__name__].__file__
    project_path = os.path.dirname(os.path.dirname(os.path.dirname(file_path)))
    log_location = project_path + '/logs/'
    if not os.path.exists(log_location):
        os.makedirs(log_location)

    current_time = datetime.now()
    current_date = current_time.strftime("%Y-%m-%d")
    file_name = current_date + '.log'
    file_location = log_location + file_name
    with open(file_location, 'a+'):
        pass

    logger = logging.getLogger(__name__)
    format = '[%(asctime)s] [%(levelname)s] [%(message)s] [--> %(pathname)s [%(process)d]:]'
    # To store in file
    logging.basicConfig(format=format, filemode='a+', filename=file_location, level=logging.DEBUG)
    # To print only
    # logging.basicConfig(format=format, level=logging.DEBUG)
    return logger

因此,现在无论何时您想记录任何内容,只需在此处调用此函数并记录您想要记录的任何内容。

以此为例:

import falcon
import base64
import json
from logger import set_up_logging
logger = set_up_logging()

app = falcon.API()
app.add_route("/rec/", GetImage())

class GetImage:

    def on_post(self, req, res):

        json_data = json.loads(req.stream.read().decode('utf8'))
        image_url = json_data['image_name']
        base64encoded_image = json_data['image_data']
        with open(image_url, "wb") as fh:
            fh.write(base64.b64decode(base64encoded_image))

        res.status = falcon.HTTP_203
        res.body = json.dumps({'status': 1, 'message': 'success'})
        logger.info("Image Server with image name : {}".format(image_name))

我希望这能帮到您。

于 2017-01-16T13:33:47.800 回答
0

Falcon 在这方面没有特别内置的功能。实际上,这就是它与其他框架的不同之处;使用 Falcon,您可以自由使用任何您想要的库。

对于我的大多数项目,标准的 python 模块logging就足够了。

于 2016-09-27T12:35:17.447 回答