Python 记录日志文件
1、打印到控制台
# -*- coding: UTF-8 -*- import logging def logFileTest():
logging.debug('This is debug')
logging.warning('This is warning message')
logging.info('This is info') logFileTest()
运行结果
WARNING:root:This is warning message
PS : 只有 logging.warning() 能打印输出到控制台,因为默认设置的等级是 warning
2、配置默认等级后,打印到控制台
# -*- coding: UTF-8 -*- import logging def logBasicConfig():
logging.basicConfig(level=logging.DEBUG)
logging.debug('This is debug')
logging.warning('This is warning message')
logging.info('This is info') logBasicConfig()
运行结果
DEBUG:root:This is debug
WARNING:root:This is warning message
INFO:root:This is info
PS : 日志级别: debug < info < warning < error < critical
3、保存到日志文件中,通过 logging.basicConfig() 设置
# -*- coding: UTF-8 -*- import logging def saveToLogFile():
logging.basicConfig(
filename = 'saveMessage.log', #保存文件路径
filemode = 'a',#保存方式,有 w 和 a 模式,默认不写为追加 a 模式
format = '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s' #日志格式
)
logging.warning('This is warning') saveToLogFile()
运行结果
2019-08-27 14:00:58,463 - D:\E_DISK\product\eclipse\logFileDemo\src\com\logFileDemo.py[line:24] - WARNING: This is warning
PS : 这是 saveMessage.log 文件中生成的日志信息
如果在 logging.basicConfig() 设置 filename 和 filemode,则只会保存 log 到文件,不会输出到控制台
4、实现info信息记录到文件,error信息记录文件并在屏幕上输出,且实现日志回滚
保存10个文件,每个文件大小为1024*1024
需要注意该函数在一个工程中只能调用一次,否则写入信息会增加,比如调用两次该函数后log.info('aaa')文件中会有两次
因此我写了一个log = LogConfig.log()其他类使用时,用该log就行,有点像单例模式
import logging.handlers
import os class LogConfig:
def __init__(self):
pass # DEBUG,INFO,NOTICE,WARNING,ERROR,CRITICAL,ALERT,EMERGENCY
# only call one @staticmethod
def log(log_name='logs/log.log', log_flag=True,
max_bytes=1024 * 1024, backup_count=10): path = os.path.split(log_name)[0]
if not os.path.isdir(path) and path != '':
os.makedirs(path)
log_handler = logging.getLogger(log_name)
if log_flag:
# write log above info
log_handler.setLevel(logging.INFO)
else:
# write log above error
log_handler.setLevel(logging.ERROR)
stream_handler = logging.StreamHandler()
# is or not show to cmd console
stream_handler.setLevel(logging.WARN)
log_handler.addHandler(stream_handler) rollback_handler = logging.handlers.RotatingFileHandler(log_name,
maxBytes=max_bytes,
backupCount=backup_count)
log_format = logging.Formatter(
'[%(asctime)s][%(levelname)s]%(message)s')
rollback_handler.setFormatter(log_format)
rollback_handler.setLevel(logging.INFO)
log_handler.addHandler(rollback_handler)
return log_handler log = LogConfig.log() if __name__ == '__main__':
log.info('')
log.error('')
Python 记录日志文件的更多相关文章
- python 记录日志logging
在项目开发中,往往要记录日志文件.用python记录日志有两种方式: 1.利用python 自带的logging库,例如: # -*- coding: utf-8 -*- import osimpor ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- python计算文件的md5值
前言 最近要开发一个基于python的合并文件夹/目录的程序,本来的想法是基于修改时间的比较,即判断文件有没有改变,比较两个文件的修改时间即可.这个想法在windows的pc端下测试没有问题. 但是当 ...
- python操作文件案例二则
前言 python 对于文件及文件夹的操作. 涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等. 代码一 作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ...
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
- python学习 文件操作
一.python打开文件 #=====================python 文件打开方式 open()===================== # open(fileName,type) t ...
- Python之文件读写
本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...
- python 遍历文件夹 文件
python 遍历文件夹 文件 import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...
- python检测文件的MD5值
python检测文件的MD5值MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权 ...
随机推荐
- iNeuOS工业互联平台,部署在智能硬件网关,实现了从边缘端到云端的一体化部署
目 录 1. 概述... 2 2. 平台演示... 3 3. 智能硬件网关配置(参考)... 3 4. iNeuOS在网关中的部署步骤... 5 4 ...
- Eureka源码分析
源码流程图 先上图,不太清晰,抱歉 一.Eureka Server源码分析 从@EnableEurekaServer注解为入口,它是一个标记注解,点进去看 注解内容如下 /** * 激活Eureka服 ...
- CSS属性中的display属性浅谈;
首先我们要知道什么是块级元素和行内元素有什么区别: 承接上篇文章:(浅谈HTML和body标签) 块级元素:浏览器解析为独占一行的元素(例如:div.table.ul等.),浏览器会在该元素的前后显示 ...
- 转载-linux内核长什么样
来源:Linux中国 今天,我来为大家解读一幅来自 TurnOff.us 的漫画 "InSide The Linux Kernel" . TurnOff.us是一个极客漫画网站,作 ...
- python 字符与数字如何转换
python中字符与数字相互转换用chr()即可. python中的字符数字之间的转换函数 int(x [,base ]) 将x转换为一个整 ...
- JVM致命错误日志详解
目录 文件描述 文件位置 文件头 错误信息记录 JVM运行信息 崩溃原因 错误信息 线程描述 线程信息 信号信息 计数器信息 机器指令 内存映射信息 线程堆栈 其他信息 进程描述 线程列表 虚拟机状态 ...
- php header() 常用content-type
//定义编码 header( 'Content-Type:text/html;charset=utf-8 '); //Atom header('Content-type: application/at ...
- ubuntu server 18.04 网络配置
从17.10开始放弃在/etc/network/interfaces里固定IP的配置 配置文件是:/etc/netplan/50-cloud-init.yaml .用缩进来表示层级关系 冒号之后要有个 ...
- Qt 的日期 时间
QDateTime 的构造函数,有参数是QDate的.这样就可以把日期转化成 QDateTime. QDateTime.toTime_t() 可以转化成 Unix 时间.
- Google Play商店为预注册的游戏和应用提供自动安装功能
谷歌 Play 商店一直在准备一项功能,它可以自动安装用户预先注册的应用程序和游戏.似乎该功能现已开始向第一批用户推出.有些人在预注册时会看到一个新选项,使他们能够利用发布时自动安装的功能. 用户在 ...