2016-09-27 17 views
1

私はPython3.4とFalcon1.0.0を使用しています。私はapache2を使って自分のファルコンアプリケーションを提供しています。今、私はファルコンアプリケーションにログを保存したいと思います。ファルコンのログを維持する方法

答えて

3

あなたは、次の方法を使用することができ、すなわちストアファイル「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)) 

私は、これはあなたを助けることを願っています。

0

この点については、ファルコンのものは特にありません。実際、それが他のフレームワークと異なる点です。ファルコンでは、あなたが望むライブラリを自由に使用することができます。

私のプロジェクトのほとんどでは、標準のPythonモジュールloggingで十分です。

+1

しかし、どこにログを保存するコードを入れるのですか?例えば、私のコードがon_get()メソッドで壊れている場合は、そのログをどのように格納するか。 – pikkupr

関連する問題