iT邦幫忙

0

伸縮自如的Flask [day11] log with mongoDB

首先,理論上今天應該進展使用Python到寫資料進mySql,但是我發現用來記錄log的套件像是logging或是log4mongo不是很好用,如果只是想把log全部存在TXT文件中,也許logging是最快的,
但是呈現在網頁中或是未來進行查詢是比較麻煩的。而log4mongo是因為我嘗試著讓他能在blue_print中能執行,

from flask import current_app
current_app.logger.info('hot dog')

可惜並沒有成功,最重要的是,多寫了這篇能幫助我把天數湊到30天的機率提高一點。

下面可以分享一下目前自訂義寫log的function:

# !/usr/bin/python
# coding:utf-8

import pymongo
from datetime import datetime

def mongo_logging(info="",user='',level='debug',param=[],func_name=''):
    now = datetime.now()
    date_time = now.strftime("%m/%d/%Y, %H:%M:%S")

    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["logs"]
    mycol = mydb["logs_col"]
    mydict = { "info": info , "time":date_time ,'level':level,"user":user,"param":param ,"func_name":func_name}

    mycol.insert_one(mydict)

跟logging比起來,比較大的差異是logging可以在basicConfig的format直接設定好是程式的哪一隻執行黨,
哪一個function。
而自訂義使用方法,也沒有很難,而且多了參數的選項:

mongo_logging(info='Bob bring some food',user=Account,level='info',param=['Account',"food"],func_name='hello()')

而將log寫入DB的好處是,有辦法依據條件來過濾我們想要的資訊,像是使用者權限、帳號、函數名稱等等。
而網頁上的呈現,一樣可以使用list的型態來呈現:

list(mycol.find(myquery,{ "_id": 0}))


尚未有邦友留言

立即登入留言