对常用python日志语法做记录,方便以后重复使用

print内容记录到文件:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
##______________________命令行执行test.py文件并写入执行结果到abc.log文件_____________________
# -*- coding: UTF-8 -*-
for i in range(1,21):
print("the number is {}".format(i)) '''
在cmd中运行
python test.py>adc.log
'''

##————————————————————————直接运行就可以记录打印内容————————————————————————————————
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
origin = sys.stdout#标准输出文件
#打开文件并执行控制台
f = open('file.txt', 'w')
sys.stdout = f
print ('开始记录打印内容')
a=555
print('a=',a)
print ('Start of progeeeeeeeeeeeeeeeeeeeram')
# 你的程序放到这里,过程中所有print到屏幕的内容都同时保存在file.txt里面了。
print ('End of program')
sys.stdout = origin
f.close()


#——————————————————print_wire.py模块——————直接执行或通过导入模块名执行即可————————————————————————————————
#!/usr/bin/env python
# encoding: utf-8
import sys
import time class Logger(object):
def __init__(self, filename="Default.log"):
self.terminal = sys.stdout
self.log = open(filename, "a")#a表示追加,w覆盖写入 def write(self, message):
self.terminal.write(message)
if '下载进度' not in message:#过滤下载进度的日志
#a=str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
self.log.write(message) def flush(self):
pass now = time.strftime("%Y-%m-%d", time.localtime())#获取当前日期
sys.stdout = Logger('123456.txt')#存放文件名 if __name__ == '__main__':
__console__=sys.stdout
print('---------start---------')
print('1234567890123456789')
print('---------stop---------')
sys.stdout=__console__
time.sleep(10) '''
如果在其他模块需要记录print内容,只需import rint_wire即可
'''

python logging日志封装:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: zhangjun
# @Date : 2018/7/26 9:20
# @Desc : Description import logging
import logging.handlers
import os
import time class logs(object):
def __init__(self):
self.logger = logging.getLogger("")
## 设置输出的等级
LEVELS = {'NOSET': logging.NOTSET,
'DEBUG': logging.DEBUG,
'INFO': logging.INFO,
'WARNING': logging.WARNING,
'ERROR': logging.ERROR,
'CRITICAL': logging.CRITICAL}
##_________________________同时打印控制台并写入文件____________________________________
## 创建文件目录
logs_dir="logs2"
if os.path.exists(logs_dir) and os.path.isdir(logs_dir):
pass
else:
os.mkdir(logs_dir)
## 修改log保存位置
timestamp=time.strftime("%Y-%m-%d",time.localtime())
logfilename='%s.txt' % timestamp
logfilepath=os.path.join(logs_dir,logfilename)
rotatingFileHandler = logging.handlers.RotatingFileHandler(filename =logfilepath,
maxBytes = 1024 * 1024 * 50,
backupCount = 5)
## 设置输出格式
formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
rotatingFileHandler.setFormatter(formatter)
## 控制台句柄
console = logging.StreamHandler()
console.setLevel(logging.NOTSET)
console.setFormatter(formatter)
## 添加内容到日志句柄中
self.logger.addHandler(rotatingFileHandler)
self.logger.addHandler(console)
self.logger.setLevel(logging.NOTSET) ##___________________________只打印控制台不写入文件____________________________________________
# logging.basicConfig(level=logging.DEBUG,
# format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') #__________________________只写入文件不打印控制台______________________________________________
# ## 创建文件目录
# logs_dir="logs2"
# if os.path.exists(logs_dir) and os.path.isdir(logs_dir):
# pass
# else:
# os.mkdir(logs_dir)
# ## 修改log保存位置
# timestamp=time.strftime("%Y-%m-%d",time.localtime())
# logfilename='%s.txt' % timestamp
# logfilepath=os.path.join(logs_dir,logfilename)
# rotatingFileHandler = logging.handlers.RotatingFileHandler(filename =logfilepath, maxBytes = 1024 * 1024 * 50,backupCount = 5)
# ## 设置输出格式
# formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
# rotatingFileHandler.setFormatter(formatter)
# ## 添加内容到日志句柄中
# self.logger.addHandler(rotatingFileHandler)
# self.logger.setLevel(logging.NOTSET) def info(self, message):
self.logger.info(message) def debug(self, message):
self.logger.debug(message) def warning(self, message):
self.logger.warning(message) def error(self, message):
self.logger.error(message) if __name__ == '__main__':
logger = logging.getLogger(__name__)
logger=logs()
logger.info("this is info")
logger.debug("this is debug")
logger.error("this is error")
#logger.warning("this is warning") # #在其他模块调用日志
# import logging
# logger = logging.getLogger(__name__)
# import 日志的模块
# if __name__ == '__main__':
# logger=日志模块.logs()
# logger.info("this is info")
# logger.debug("this is debug")
# logger.error("this is error")
# logger.warning("this is warning")

第三方loguru模块处理日志:

如果想更简洁,可用loguru库,python3安装:pip3 install loguru。

loguru默认的输出格式是上面的内容,有时间、级别、模块名、行号以及日志信息,不需要手动创建 logger,直接使用即可,另外其输出还是彩色的,看起来会更加友好。

from loguru import logger

logger.debug('this is a debug message')
logger.info('this is another debug message')
logger.warning('this is another debug message')
logger.error('this is another debug message')
logger.info('this is another debug message')
logger.success('this is success message!')
logger.critical('this is critical message!')

 写入文件:

from loguru import logger

logger.add('my_log.log')
logger.debug('this is a debug')

运行之后会发现目录下 my_log.log 出现了刚刚控制台输出的 DEBUG 信息

相关连接:

https://mp.weixin.qq.com/s?__biz=MzkxNDI3NjcwMw==&mid=2247493818&idx=1&sn=1b913b843f60b522041dcd0807f2ba2f .....................loguru一行代码搞定Python日志

https://blog.csdn.net/cui_yonghua/article/details/107498535 ........................................................................................................................loguru详细用法(好处:不用学代码直接调用即可)

https://www.jb51.net/article/201169.htm .........................................................................................................................................................python 如何对logging日志封装
 

日志服务相关连接(详情在数据分类):

https://c4ys.com/archives/552 ....................................................................python+logstash+elasticsearch+Kibana日志方案

https://www.cnblogs.com/xuzhongtao/p/12466351.html ..............................Kibana搭建

python日志篇-基础版的更多相关文章

  1. Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice)

    Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Py ...

  2. Python入门篇-基础语法

    Python入门篇-基础语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编程基础 1>.程序 一组能让计算机识别和执行的指令. 程序 >.算法+ 数据结构= 程 ...

  3. 【python】文件下载---基础版

    基于TCP协议的基础版本,不支持大文件 Client.py import socket def main(): # 1. 创建套接字 tcp_socket = socket.socket(socket ...

  4. 01 基础版web框架

    01 基础版web框架 服务器server端python程序(基础版): import socket server=socket.socket() server.bind(("127.0.0 ...

  5. 深度学习入门者的Python快速教程 - 基础篇

      5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...

  6. [资料分享]Python视频教程(基础篇、进阶篇、项目篇)

    Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度.它可以用来开发各种程序,从简单的脚本任务到复杂的.面向对象的应用程序都有大显身手的地方.Python还被当作一 ...

  7. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  8. Python之路,第一篇:Python入门与基础

    第一篇:Python入门与基础 1,什么是python? Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 2,python的特征: (1)易于学习,易于利用: (2)开 ...

  9. 零基础学python》(第二版)

    ---恢复内容开始--- 零基础学python>(第二版) python学习手册 可以离线下载,  .chn格式, 插入小幽默笑话,在学习累的时候看看笑话 放松一下 欢迎下载转载,请注明出处,谢 ...

  10. 《Python编程第4版 下》高清PDF|百度网盘免费下载|Python基础编程

    <Python编程第4版 下>高清PDF|百度网盘免费下载|Python基础编程 提取码:tz5v 当掌握Python的基础知识后,你要如何使用Python?Python编程(第四版)为这 ...

随机推荐

  1. Winform 程序多开

    在使用应用程序的过程中,经常要求应用程序只能运行一次.如果发现重复开启,应从系统进程列表中搜索到已经开启的进程,并将该进程窗口移到最前端显示. 记录一下过程. 实现过程 在 Program.cs 文件 ...

  2. net core 依赖注入DI

    控制反转:Inversion Of Control,简称 IOC,是面向对象中的一种设计原则,调用者不自己new实例,而是交给容器去创建,可以减轻代码的耦合度. 依赖注入:Dependency Inj ...

  3. 微信小程序if for

    1.控制代码的显示隐藏 1.wx:if="{{}}"判断是否需要渲染代码 <view wx:if="{{tiaojian===1}}">显示1< ...

  4. 加载properties文件

    import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java ...

  5. vue开发中,数据更新,但视图不刷新

    我们在开发过程中会碰到数据更新,但是视图并未改变的情况,情况如下: 第一种:动态给对象新增属性或者删除属性是不会触发视图刷新的,Vue识别不到: 第二种:通过数组下标修改数组中的元素或者手动修改数组的 ...

  6. Word19 撰写企业质量管理论文office真题

    1.看到题目要求:打开考试文件下的素材文档"WPS.docx"文件,后续操作均基于此文件,否则不得分. 2.这一步的操作非常简单,打开文件目录进行双击打开即可完成操作. 3.看到题 ...

  7. python命令行开发--click

    目录 前言 安装 快速上手 参考文档 前言 按照官方的介绍:Click 是一个利用很少的代码以可组合的方式创造优雅命令行工具接口的 Python 库. 它是高度可配置的,但却有合理默认值的" ...

  8. 采集存储计算处理卡设计原理图:619-基于6U VPX的双FMC ZU19EG 采集存储计算处理卡

    619-基于6U VPX的双FMC ZU19EG 采集存储计算处理卡   基于6U VPX的双FMC ZU19EG 采集存储计算处理卡 一.板卡概述 该板卡是采集.存储.计算.管理一体的高集成度.加固 ...

  9. linux系统过滤文件,并且通过时间对过滤的文件排序

    命令如下所示: find /home/deep/tf/20220601/study -name '*.h5' |xargs ls -lta

  10. jssip3.9.1的demo,webphone网页电话

    用的目前最新的3.9.1版本,全版本在这里: https://jssip.net/download/releases/ https://github.com/versatica/JsSIP 代码: & ...