您的位置:首页 > 数据库 > Mongodb

Logstash+FileBeat+MongoDB+Flask打造的日志系统(二) 3ff8

2017-09-29 10:48 603 查看
后端采用Python的Flask框架。

pip install Flask

pip install Flask-PyMongo

功能比较少,就是查询MongoDB,按时间降序,开始的时候出现MongoDB排序超出32M限制的错误,后来在logtime 加上索引解决。

from flask import Flask, jsonify, Response, request, session, redirect, url_for
from flask import render_template
from flask_pymongo import PyMongo, DESCENDING
from bson.json_util import dumps
from datetime import datetime
import hashlib

app = Flask(__name__)
app.config['MONGO_HOST'] = '192.168.1.15'
app.config['MONGO_PORT'] = 27017
app.config['MONGO_DBNAME'] = 'test'
app.config['SECRET_KEY']='huanghongqiaoydgy1233456rr'

mongo = PyMongo(app)

@app.route("/")
def index():
return render_template("index.html")

@app.route("/checkLogin", methods=["POST", "GET"])
def checkLogin():
if request.method == 'POST':
if 'username' in session:
return Response(dumps({'auth' : True}), mimetype="application/json", status=200)
else:
pwd = hashlib.md5(request.form['password'].encode('utf8')).hexdigest()
rs = mongo.db.users.find_one({'username': request.form['username'], 'password': pwd})
if rs is not None:
session['username'] = request.form['username']
return Response(dumps({'auth' : False if rs is None else True}), mimetype="application/json", status=200)

@app.route("/show_devlog", methods=["POST"])
def show_devlog():
cond = {}
time_cond = {}
if request.method == 'POST':
if 'username' not in session:
return Response("needLogin")
if request.form['msg'].strip() != '':
cond['msg'] = {'$regex': request.form['msg'].strip()}
if request.form['project'] != '':
cond['type'] = request.form['project'].strip()
if request.form['loglevel'] != '':
cond['loglevel'] = request.form['loglevel'].strip()
if request.form['beginTime'] != '':
time_cond['$gte'] = datetime.strptime(request.form['beginTime'], '%Y-%m-%dT%H:%M:%S.%fZ')
if request.form['endTime'] != '':
time_cond['$lte'] = datetime.strptime(request.form['endTime'], '%Y-%m-%dT%H:%M:%S.%fZ')
if time_cond != {}:
cond["logtime"]	= time_cond
currentPage = int(request.form['currentPage'])
pageSize = int(request.form['pageSize'])
logs = mongo.db.log.find(cond).sort('logtime', DESCENDING).limit(pageSize).skip((currentPage - 1) * pageSize)
rs = {"logs": logs, "cnt": logs.count()}
format = dumps(rs)
return Response(response = format, mimetype="application/json", status=200)

if __name__ == '__main__':
app.run(host="0.0.0.0")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: