首先,理论上今天应该进展使用Python到写资料进mySql,但是我发现用来记录log的套件像是logging或是log4mongo不是很好用,如果只是想把log全部存在TXT文件中,也许logging是最快的,
但是呈现在网页中或是未来进行查询是比较麻烦的。而log4mongo是因为我尝试着让他能在blue_print中能执行,
from flask import current_appcurrent_app.logger.info('hot dog')
可惜并没有成功,最重要的是,多写了这篇能帮助我把天数凑到30天的机率提高一点。
下面可以分享一下目前自订义写log的function:
# !/usr/bin/python# coding:utf-8import pymongofrom datetime import datetimedef 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}))
[day 1] 开场白[day 2] blue_print[day 3] Factory mode[day 4] JWT token[day 5] session[day 6] Jinja[day 7] Post data with Form tag[day 8] ajax with jquery[day 9] request[day 10] 将资料写进DB(pymongo)[day 11] log with mongoDB[day 12] Sql Database[day 13] 档案上传[day 14] 档案下载 及 其他传值方法[day 15] boostrap 4.6[day 16] API[day 17] Docker image化--安装篇[day 18] Docker image化--运行篇[day 19] Nginx[day 20] Docker compose[day 21] Nginx with https[day 22] pythonanywhere 部署[day 23] GCP app engine (介绍)[day 24] GCP app engine (deploy)[day 25] Flask with web cam[day 26] Flask with ML[day 27] Supervisor[day 28] Flask-Mail[day 29] Line Messaging API[day 30] 结语