【Flask项目2】多进程下的日志文件(2)
comment—utils—financial_logging.py
import logging
import logging.handlers
from flask import request
import os'''
定义日志的格式和日志输出的目标
'''
class RequestShoppingFormatter(logging.Formatter):'''自定义的日志输出格式'''def format(self, record):record.url=request.url #需要在日志中记录请求地址record.remote_addr=request.remote_addr #需要在日志中记录客户端的地址return super().format(record)#创建一个个性化的logger对象
def create_logger(app):'''设置日志的配置:param app:Flask中app对象:return:'''logging_file_dir=app.config['LOGGING_FILE_DIR'] #日志文件所在的目录logging_file_max_bytes=app.config['LOGGING_FILE_MAX_BYTES'] #日志文件的最大的大小logging_file_backup=app.config['LOGGING_FILE_BACKUP'] #保留备份的日志文件个数logging_level=app.config['LOGGING_LEVEL'] #默认的日志级别#设置日志输出的格式(针对文件)request_formatter=RequestShoppingFormatter('[%(asctime)s] %(remote_addr)s 请求 %(url)s \t %(levelname)s 在 %(module)s %(lineno)d : %(message)s')#检查如果目录不存在,则创建目录if os.path.isdir(logging_file_dir):passelse:os.mkdir(logging_file_dir) #如果目录不存在,创建目录#自定义一个目录和日志文件,RotatingFileHandler:安装指定文件大小来规定日志文件的生产规则# flask_file_handler=logging.handlers.RotatingFileHandler(filename=os.path.join(logging_file_dir,'financial.log'),# maxBytes=logging_file_max_bytes,# backupCount=logging_file_backup)#为了让一个进程操作一个文件,文件名的命名:加上当前进程的ID#TimedRotatingFileHandler:根据时间来规定日志文件的生成规则。flask_file_handler = logging.handlers.TimedRotatingFileHandler(filename=os.path.join(logging_file_dir, 'financial'+'_'+str(os.getpid())+'.log'),when='D',interval=1,backupCount=logging_file_backup)#给当前的handler设置格式flask_file_handler.setFormatter(request_formatter)#todo 得到一个logger对象,根据包(financial)的名字,用其他的包名不符合逻辑flask_logger=logging.getLogger('financial')flask_logger.addHandler(flask_file_handler)flask_logger.setLevel(logging_level)#整个项目需要两个handle:文件。控制台flask_console_handler=logging.StreamHandler()flask_console_handler.setFormatter(logging.Formatter('[%(asctime)s] %(levelname)s %(module)s %(lineno)d : %(message)s'))#当项目运行环境是debug模式,才用控制台输出if app.debug:flask_logger.addHandler(flask_console_handler)
main.py中初始化日志处理的工具
from comment.utils.financial_logging import create_loggercreate_logger(app)
【Flask项目2】多进程下的日志文件(2)相关推荐
- 在 Java 中,如何批量读取本项目资源目录下的所有文件
在 Java 中,如何批量读取本项目资源目录下的所有文件 读取资源目录下的指定文件 方法 1:使用 JDK 中原始 API 方法 2:借助 Spring 附录 将 InputStream 转化为 by ...
- Tomcat logs 目录下各日志文件的含义
[Tomcat]tomcat logs 目录下各日志文件的含义 tomcat每次启动时,自动在logs目录下生产以下日志文件,按照日期自动备份.可以帮助我们更好的找出错误. 一. 认识各种目录的作用及 ...
- 【Tomcat】tomcat logs 目录下各日志文件的含义
[Tomcat]tomcat logs 目录下各日志文件的含义 一.认识各种目录的作用及记录的信息目录 1.catalina.日期.log 2.commons-daemon.日期.log 3.host ...
- Centos下重要日志文件及查看方式
Centos下重要日志文件及查看方式 时间:2013-07-28 12:10来源:中国IT实验室 作者:感谢:"匿名"投稿 举报 点击:6525次 id="iframeu ...
- ubuntu 15.04 /var/log/下各个日志文件及修复无message文件和debug文件
本文简单介绍ubuntu/var/log/下各个日志文件,方便出现错误的时候查询相应的log /var/log/alternatives.log-更新替代信息都记录在这个文件中/var/log/app ...
- logback多进程写同一日志文件导致日志混乱问题
记录一次logback多进程写同一日志文件导致日志混乱问题 参考该博客解决问题
- Flask项目能打包为单个exe文件运行?掌握原理后居然如此简单!
Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨王翔丨 来源丨清风Python(ID:Bree ...
- 多进程写同一个日志文件时如何确保每条日志不与其他日志重叠
背景/ write + O_APPEND 可以实现多进程写相同日志不交叉 我们有多个进程,往同一个文件写日志.当然希望能每条日志边界清晰,既不与其他日志重叠,也不与其他日志交叉.为了达到这个目的,最直 ...
- Linux 下高级日志文件查看器Log File Navigator
Log File Navigator,简称lnav,是一款面向小规模的适用于 Linux 的高级日志文件查看器.它是一个终端应用程序,可以理解您的日志文件,让您轻松找到问题,几乎不需要什么设置. ln ...
最新文章
- pcl_filters模块api代码解析
- git.exe 启动 慢_拳头:今年将修复英雄联盟客户端 启动时间降到19秒
- 山水人家(附简要教程)
- Latex中的一些表格用法总结(二)——行列式的表格,表格的切分和合并
- ISLR_ANOVA
- linux能修复根目录硬盘,Linux系统报错修复的方法
- android电源驱动程序,[转]Android虚拟电源管理驱动
- Android深度探索HAL与驱动开发—第8章
- 乡村振兴国际经验-农民丰收节贸易会: 谋定城镇化进程
- 简单递推公式转换矩阵求解
- java 枚举使用例子_Java枚举详解及使用实例(涵盖了所有典型用法)
- JavaScript中带有示例的Math.PI属性
- winform flash
- 用Matlab处理信号从入门到入土1
- html中的字体怎么选择,网页开发中如何选取合适且统一的字体
- 云购系统、一元云购系统接入短信验证及订单通知功能
- 腾讯通、第一企信、imo云办公室、263云通信哪家强
- 水冷计算机配置单,新手水冷电脑组装的详细图文教程
- 如何获取手机的屏幕尺寸
- xposed模块编写教程_Xposed插件开发入门详解,
热门文章
- mysql语言的简介_谁能帮我介绍一下 MY SQL ?
- 为什么PUE只说明了数据中心能效的一部分?
- 机房工程施工细节标准做法,每张图都有说明
- 数据中心机房布线系统运维和管理
- 数据中心级交换机考核方法
- 直流UPS与传统UPS系统节能分析
- shell怎么把负数变成正数_excel怎么计算平方根-记住简单的收藏复杂的
- 成功解决RuntimeWarning: divide by zero encountered in double_scalars
- DL之perceptron:利用perceptron感知机对股票实现预测
- 成功解决from nets import inception_resnet_v2 ModuleNotFoundError: No module named 'nets'