From f765bbf4cb0a71a618a3d049db6b7955bcceff22 Mon Sep 17 00:00:00 2001 From: hjdhnx Date: Sat, 27 Aug 2022 21:02:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=9E=E6=97=B6=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 16 ++++++++---- classes/cms.py | 11 ++------ libs.txt | 1 + utils/log.py | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+), 14 deletions(-) create mode 100644 libs.txt create mode 100644 utils/log.py diff --git a/app.py b/app.py index 264fb2a..67b15b7 100644 --- a/app.py +++ b/app.py @@ -6,8 +6,6 @@ from flask_sqlalchemy import SQLAlchemy import config -import socket -from gevent.pywsgi import WSGIServer import warnings warnings.filterwarnings('ignore') @@ -18,7 +16,7 @@ from utils import error,parser from utils.web import * import sys import codecs -from classes.cms import CMS +from classes.cms import CMS,logger import json sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) @@ -26,12 +24,16 @@ app = Flask(__name__,static_folder='static',static_url_path='/static') # app.config["JSON_AS_ASCII"] = False # jsonify返回的中文正常显示 app.config.from_object(config) # 单独的配置文件里写了,这里就不用弄json中文显示了 +app.logger.name="drLogger" db = SQLAlchemy(app) rule_list = getRules() -# print(rule_list) +logger.info(rule_list) +logger.info(f'http://{getHost(1, 5705)}/index\nhttp://localhost:5705/index') from models import * +from gevent.pywsgi import WSGIServer +# from geventwebsocket.handler import WebSocketHandler RuleClass = rule_classes.init(db) @@ -57,6 +59,7 @@ def forbidden(): # put application's code here @app.route('/index') def index(): # put application's code here + logger.info("进入了首页") return render_template('index.html',getHost=getHost) @app.route('/vod') @@ -214,5 +217,8 @@ def database(): if __name__ == '__main__': # app.run(host="0.0.0.0", port=5705) # app.run(debug=True, host='0.0.0.0', port=5705) - WSGIServer(('0.0.0.0', 5705), app).serve_forever() + # server = WSGIServer(('0.0.0.0', 5705), app, handler_class=WebSocketHandler,log=app.logger) + server = WSGIServer(('0.0.0.0', 5705), app,log=logger) + # server = WSGIServer(('0.0.0.0', 5705), app, handler_class=WebSocketHandler,log=None) + server.serve_forever() # WSGIServer(('0.0.0.0', 5705), app,log=None).serve_forever() \ No newline at end of file diff --git a/classes/cms.py b/classes/cms.py index dc47535..d87ef78 100644 --- a/classes/cms.py +++ b/classes/cms.py @@ -9,19 +9,12 @@ import math from utils.web import * from models import * from utils.config import config +from utils.log import get_logger from utils.htmlParser import jsoup from urllib.parse import urljoin from concurrent.futures import ThreadPoolExecutor # 引入线程池 -import logging -from js.rules import getRules -_logger = logging.getLogger(__name__) -print(_logger) -rule_list = getRules() -print(rule_list) - -_logger.info('cms类装载完毕') -print(f'http://{getHost(1, 5705)}/index\nhttp://localhost:5705/index') +logger = get_logger('dr.log') class CMS: def __init__(self,rule,db=None,RuleClass=None): diff --git a/libs.txt b/libs.txt new file mode 100644 index 0000000..9a113ac --- /dev/null +++ b/libs.txt @@ -0,0 +1 @@ +gevent-websocket \ No newline at end of file diff --git a/utils/log.py b/utils/log.py new file mode 100644 index 0000000..f1fa6c9 --- /dev/null +++ b/utils/log.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# File : log.py +# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------ +# Date : 2022/8/27 + +import os +import logging +from logging import handlers +import sys + +dirname, filename = os.path.split(os.path.abspath(sys.argv[0])) +LOG_ROOT = dirname +# print(LOG_ROOT) + +# logging.basicConfig( +# # level=logging.INFO, # 控制台打印的日志级别 +# level=logging.DEBUG, # 控制台打印的日志级别 +# filename='dr.log', # 将日志写入log_new.log文件中 +# filemode='a', # 模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志 a是追加模式,默认如果不写的话,就是追加模式 +# # format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', +# format="%(asctime)s:%(levelname)s:%(name)s -- %(message)s", datefmt="%Y/%m/%d %H:%M:%S" # 日志格式 +# ) + +def get_logger(log_filename, level=logging.DEBUG, when='D', back_count=0): + """ + https://blog.csdn.net/qq_39147299/article/details/124455632 + :brief 日志记录 + :param log_filename: 日志名称 + :param level: 日志等级 critical > error > warning > info > debug 当设置某个级别之后,把它低的不会被记录,例如级别设置为warning,则info和debug则会被丢弃 + :param when: 间隔时间: + S:秒 + M:分 + H:小时 + D:天 + W:每星期(interval==0时代表星期一) + midnight: 每天凌晨 + :param back_count: 备份文件的个数,若超过该值,就会自动删除 + :return: logger + """ + # 创建一个日志器。提供了应用程序接口 + logger = logging.getLogger(log_filename) + # 设置日志输出的最低等级,低于当前等级则会被忽略 + logger.setLevel(level) + # 创建日志输出路径 + log_path = os.path.join(LOG_ROOT, "logs") + if not os.path.exists(log_path): + os.mkdir(log_path) + log_file_path = os.path.join(log_path, log_filename) + # 创建格式器 + # formatter = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',datefmt="%Y/%m/%d %H:%M:%S") + formatter = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d]:%(levelname)s:%(name)s -- %(message)s', datefmt="%Y-%m-%d %H:%M:%S") + # 创建处理器:ch为控制台处理器,fh为文件处理器 + ch = logging.StreamHandler() + ch.setLevel(level) + # 输出到文件 + fh = logging.handlers.TimedRotatingFileHandler( + filename=log_file_path, + when=when, + backupCount=back_count, + encoding='utf-8') + fh.setLevel(level) + # 设置日志输出格式 + fh.setFormatter(formatter) + ch.setFormatter(formatter) + # 将处理器,添加至日志器中 + logger.addHandler(fh) + logger.addHandler(ch) + + return logger -- GitLab