python 运行日志logging代替方案
以下是自己写的 记录日志的代码。(和logging不搭嘎,如果如要学loggging模块,本文末尾有他人的链接。)
# prtlog.py ############################################# # -*- coding: utf-8 -*- """ Created on Wed Dec 12 10:46:06 2018需求起源:1. 在spyder中写python脚本时,经常要写print来调试; 开发完执行时(python file.py),也需要运行log来找bug.2. 如果用print, 运行时python file.py >> log 缺点:(1) file.py不结束无法查看log文件 (2)别人模块中的输出,会不断在输出到log.3. 如果用logging模块 缺点:(1) spyder调试时,log文件一直处于打开状态 (2)在spyder中调试时不好用,logging好像主要为了记录运行时的日志。功能:1. 开发时输出print结果,运行时输出同目录下1.log文件2. 保留最新log中前num行3. 每次使用prtlog输出都会打开并关闭1.log文件缺点:效率不高(不追求效率就无所谓了) """import os,sys import time,datetimedef checklog(logfile,num=1000):#保留文件中至少num行try:if os.path.exists(logfile):lines = open(logfile,'r').readlines()if len(lines)>num+num*0.5: #当文件大于num+500时,只保留最近num行,避免删除重写文件频率太高。 os.remove(logfile)with open(logfile,'w') as f:for line in lines[-num:]:f.write(line)else:passexcept:print('Wrong! : [fun]checklog.')def prtlog(logstr='123',linenum='',maxlines=1000):#linenum 指运行时所在行号logstr= str(logstr); dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))logfile = os.path.join(dirname,'1.log')checklog(logfile,maxlines)with open(logfile,'a+') as f:lineheader='%s %s[%s]: '%(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),filename,linenum)f.write(lineheader+logstr+'\n')print(lineheader+logstr)f.close()if __name__ == '__main__':prtlog(logstr='123')# b.py #############################################from prtlog import prtlog prtlog('haha',maxlines=10)
同目录下生成1.log
运行prtlog.py3次,运行b.py3次. 1.log内容:
如需了解logging:
(转)python logging模块 ★★,
python中logging模块的一些简单用法 ★★★★★★★,
python模块之logging ★★★★
Python之日志处理(logging模块)★★★★
转载于:https://www.cnblogs.com/andylhc/p/10118603.html
python 运行日志logging代替方案相关推荐
- python之 logging模块详细使用【转载】
很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出 ...
- python stdout_详解使用python的logging模块在stdout输出的两种方法
详解使用python的logging模块在stdout输出 前言: 使用python的logging模块时,除了想将日志记录在文件中外,还希望在前台执行python脚本时,可以将日志直接输出到标准输出 ...
- Python中logging.config配置文件解读
Python中logging.config配置文件解读 下面的函数用于配置logging模块,它们位于logging.config模块中.你可以使用这些函数来配置,也可以在logging或是loggi ...
- python使用logging捕获异常后继续执行函数
使用python的logging模块可以在捕获异常后,记录异常且不退出程序: 例子: import logginglogging.basicConfig(filename='new.log', # 打 ...
- django/python日志logging 的配置以及处理
日志在程序开发中是少不了的,通过日志我们可以分析到错误在什么地方,有什么异常.在生产环境下有很大的用处.在java 开发中通常用 log4j,logback 等三方组件.那么在 django中是怎么处 ...
- Python 日志logging模块初探及多线程踩坑(2)
系列文章: Python 日志logging模块初探及多线程踩坑(1) Python 日志logging模块初探及多线程踩坑(2) 接着上面一篇文章,我们这篇来写一个多进程兼容且无损性能的 Timed ...
- python使用logging打印信息到日志文件中
python使用logging打印信息到日志文件中 参考 Python输出日志信息 Python + logging 输出到屏幕,将log日志写入文件 使用logging打印日志到文件中的目的是: 解 ...
- FreeCAD C/C++/Python混合开发/调试方案
FreeCAD C/C++/Python混合开发/调试方案 济南友泉软件有限公司 本文主要讲述在Visaul Studio 2019中混合调试FreeCAD C/C++/Python代码的环境配置方法 ...
- python 之logging 模块
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
最新文章
- 并发控制:(三)MVCC 多版本并发控制
- csrf 攻击和防御
- UA OPTI570 量子力学17 创生算符与湮灭算符
- sqlite工具类 java_Java之泛型、集合工具类
- 基于jsp+mysql+Spring的SpringBoot招聘网站项目(完整源码+sql)主要实现了管理员登录,简历管理,问答管理,职位管理,用户管理,职位申请进度更新,查看简历
- 职称计算机考试word2003真题,职称计算机考试《Word2003》历年真题回顾(1)
- 由浅入深CIL系列:4.抛砖引玉:使用CIL来分析string类型在.NET运算中的性能和避免装箱...
- android之module删除不干净
- Spring学习-Bean的理解
- 罗振宇跨年演讲全文、PPT、图解
- Python代码对接抖音去水印提取API接口、TikTok去水印解析接口的源码
- 键盘拆开重新安装步骤_笔记本键盘怎么拆——键盘分拆详细步骤
- 【数据分析】数据分析方法(一):5W2H 分析方法
- 在命令行下转换磁盘分区格式为GPT或MBR(会丢失所有数据)
- q_i7p_co/index_php rmvb_某返利网站admin目录index.php文件混淆加密算法分析
- 对应于正态分布的拉丁超立方抽样——Python版
- 星宸科技IC2020笔试
- 小白易语言post培训接码登录day03
- smcsuperio黑苹果_基于OpenCore0.6.1的黑苹果安装,小白也能看
- Win10打不开OneDrive
热门文章
- 【ORACLE 高可用】 高级复制的两个配置实例 - 使用高级复制和物化视图
- GitHub控件之BadgeView(数字提醒)
- Android 如何在App中启动系统闹钟
- Android 高级Drawable资源---复合Drawable----变换Drawable---RotateDrawable用法实例
- Java---类加载
- 张志华教授《机器学习导论》和《统计机器学习》课程讲义
- Eclipse调试Logcat类的说明
- Flutter入门:Hero共享元素
- 前端读者 | 由setTimeout引发的JS引擎运行机制的研究
- poj2976 Dropping tests(01分数规划 好题)