首先,理論上今天應該進展使用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}))