python日志篇-基础版
对常用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://c4ys.com/archives/552 ....................................................................python+logstash+elasticsearch+Kibana日志方案
https://www.cnblogs.com/xuzhongtao/p/12466351.html ..............................Kibana搭建
python日志篇-基础版的更多相关文章
- Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice)
Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Py ...
- Python入门篇-基础语法
Python入门篇-基础语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编程基础 1>.程序 一组能让计算机识别和执行的指令. 程序 >.算法+ 数据结构= 程 ...
- 【python】文件下载---基础版
基于TCP协议的基础版本,不支持大文件 Client.py import socket def main(): # 1. 创建套接字 tcp_socket = socket.socket(socket ...
- 01 基础版web框架
01 基础版web框架 服务器server端python程序(基础版): import socket server=socket.socket() server.bind(("127.0.0 ...
- 深度学习入门者的Python快速教程 - 基础篇
5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...
- [资料分享]Python视频教程(基础篇、进阶篇、项目篇)
Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度.它可以用来开发各种程序,从简单的脚本任务到复杂的.面向对象的应用程序都有大显身手的地方.Python还被当作一 ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- Python之路,第一篇:Python入门与基础
第一篇:Python入门与基础 1,什么是python? Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 2,python的特征: (1)易于学习,易于利用: (2)开 ...
- 零基础学python》(第二版)
---恢复内容开始--- 零基础学python>(第二版) python学习手册 可以离线下载, .chn格式, 插入小幽默笑话,在学习累的时候看看笑话 放松一下 欢迎下载转载,请注明出处,谢 ...
- 《Python编程第4版 下》高清PDF|百度网盘免费下载|Python基础编程
<Python编程第4版 下>高清PDF|百度网盘免费下载|Python基础编程 提取码:tz5v 当掌握Python的基础知识后,你要如何使用Python?Python编程(第四版)为这 ...
随机推荐
- go 神奇的错误 time.Now().Format("2006-01-02 13:04:05") 比北京时间大8小时
困倦的时候写了个个获取本地时间,打印总比当前时间大8小时,找了很久原因 package main import ( "fmt" "time" ) func ma ...
- C端自动化实现:appium+winappdriver+python
一. 前言 有小伙伴有办公自动化的需求,特此出一篇C端自动化教程,并附带demo案例.C端的自动化比B端多一个appium,其他的操作大同小异. 二. 环境 appium:exe工具,用于启动服务,官 ...
- JZOJ 3494. 【NOIP2013模拟联考13】线段(segment)
题目 数轴上有很多单位线段,一开始时所有单位线段的权值都是 \(1\).有两种操作,第一种操作将某一区间内的单位线段权值乘以 \(w\),第二种操作将某一区间内的单位线段权值取 \(w\) 次幂.并且 ...
- ENCOURAGE研究: 病情中度活动RA获得深度缓解后有望实现停药
标签: 类风湿关节炎; TNF拮抗剂; 维持期减停 病情中度活动的RA患者在获得深度缓解后有望实现停用生物制剂 电邮发布日期: 2016年2月3日 病情中度活动的类风湿关节炎(RA)患者通过传统DMA ...
- 国外的SRE都是干啥工作的?薪资如何?
本文翻译自:https://www.flagship.io/glossary/site-reliability-engineer/,意译~ 众所周知,开发和 IT 运营之间因为屁股决定脑袋,存在巨大的 ...
- DBeaver连接clickhouse无法下载驱动的情况
最近遇到dbeaver 连接clickhouse的时候提示下载驱动失败. 在网上找了些方法也不行,其中包括默认下载.配置阿里云的Maven. 最后在网上找到一个驱动包,自己手动添加即可.把下载地址分享 ...
- 2022年冬pat乙级考试题目及代码解析附部分错误原因
快考pat乙级了,花了十块钱做了一下去年冬天的pat乙级,不难,现在在花ac之后的时间来写文章,默默许愿几天后的也不难,但是我们也要做好准备啊~ B-1 谣言检测仪 分数 15 作者 陈越 单位 浙江 ...
- vue 2 中防抖节流在当前页面里写
isfilter(val) { // 过滤 this.debounce(() => { this.init(val); }, 1000); ...
- 实验五Elasticsearch+Kibana展示爬虫数据
安装elasticsearch-rtf Elasticsearch-rtf相比于elasticsearch而言多加了一些插件,因此我们选择安装Elasticsearch-rtf是一个不错的选择.在安装 ...
- 配置jupyter lab遇到 libffi.so.7缺失
问题描述 使用 jupyter lab password 命令 配置jupyter 密码 报错 思路 去换一个conda环境 找到其lib内部的 libffi.so.7文件 解决方法 ln -s 其他 ...