python 日志输出变量_Python日志输出
简单的将日志打印到屏幕
import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
输出:
WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message
可见,默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG ),默认日志格式如上
灵活配置日志级别,日志格式,输出位置 (将日志写入文件)
import logging
logging.basicConfig(filename='myapp.log',
filemode='w',
level=logging.CRITICAL,
format=('%(asctime)s %(filename)s %(levelname)s %(message)s'),
datefmt="%m/%d/%Y %H:%M:%S %p")
logging.debug("debug message")
logging.info("info message")
logging.warning("warning message")
logging.error("error message")
logging.critical("critical message")
查看文件:
04/06/2017 11:16:35 AM test13.py CRITICAL critical message
可见在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有
filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
format:指定handler使用的日志显示格式。
datefmt:指定日期时间格式。
level:设置rootlogger(后边会讲解具体概念)的日志级别
format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(message)s用户输出的消息
注意:basicConfig是单实例模式,创建时候只有一个logger对象。还是使用下面的方法吧...
同时输出至文件和屏幕
Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适:
logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过logging.getLogger(name)获取logger对象,如果不指定name则返回root对象,多次使用相同的name调用getLogger方法返回同一个logger对象。
handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。
filter:提供一种优雅的方式决定一个日志记录是否发送到handler。
formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。
import logging
#设置输出流
ch=logging.StreamHandler() #屏幕输出
ch.setLevel(logging.ERROR) #屏幕输出级别
fh=logging.FileHandler("test_log",'w') #文件输出,默认为‘a’
fh.setLevel(logging.DEBUG)
#设置输出流格式并将格式加入到输出流
ch_formatter=logging.Formatter("%(asctime)s %(filename)s %(message)s")
fh_formatter=logging.Formatter('%(asctime)s-%(name)s-%(message)s')
ch.setFormatter(ch_formatter) #添加到输出流
fh.setFormatter(fh_formatter) #添加到输出流
#创建一个log并添加定义的输出流
log=logging.getLogger("mylog")
log.setLevel(logging.WARNING) #全局设置,logging.INFO将不会被打印
log.addHandler(ch)
log.addHandler(fh)
log.debug('debugmessage')
log.info('infomessage')
log.warning('warningmessage')
log.error('error message')
log.critical('critical message')
屏幕输出:
2017-04-06 12:07:17,911 logging多输出.py error message
2017-04-06 12:07:17,911 logging多输出.py critical message
文件test_log输出:
2017-04-06 12:07:17,911-mylog-warningmessage
2017-04-06 12:07:17,911-mylog-error message
2017-04-06 12:07:17,911-mylog-critical message
文件日志自动截断
import logging,time
from logging import handlers
#根据文件大小或时间间隔来截断文件
# fh=handlers.RotatingFileHandle(filename='rotatingfile_log',maxBytes=10,backupCount=3,encoding='utf-8')
fh=handlers.TimedRotatingFileHandler(filename='rotatingfile_log',when='s',
interval=5,backupCount=3,encoding='utf-8')
# formatter=logging.Formatter('%(asctime)s %(filename)s %(message)s')
formatter=logging.Formatter(fmt='%(asctime)s %(filename)s %(message)s',datefmt='%Y-%m-%d %H:%M:%S')
fh.setFormatter(formatter)
fh.setLevel(logging.DEBUG)
logger=logging.getLogger('test_again')
logger.addHandler(fh)
logger.debug("123")
time.sleep(2)
logger.info("456")
time.sleep(2)
logger.warning("789")
time.sleep(2)
logger.error("abc")
time.sleep(2)
logger.critical("000")
时间截断的when参数是一个字符串。表示时间间隔,不区分大小写
S秒 M分 H小时 D天
midnight每天凌晨
python 日志输出变量_Python日志输出相关推荐
- python 日志输出变量_python中记录打印的log模块logging的用法实例
日志基础教程 日志是对软件执行时所发生事件的一种追踪方式.软件开发人员对他们的代码添加日志调用,借此来指示某事件的发生.一个事件通过一些包含变量数据的描述信息来描述(比如:每个事件发生时的数据都是不同 ...
- python如何控制输出格式_python格式化输出
python格式化输出 一.格式化输出三种方式 在写程序的过程中难免要得,输出有有特色的格式来,没有特色,谁还会耐得下去看呢,恐怕自己都写小烦躁,不要不要得,毕竟人就是个神奇的小动物嘛,所以说不得不提 ...
- 用python输出数组_Python 中输出数组中的全部元素
只需要在开头加上一句即可 import numpy as np np.set_printoptions(threshold=np.inf) Python 输出到文本中 参考:https://blog. ...
- python定义一个变量_Python新手上车3:Python第一个程序和变量
第一个程序 上节内容我们提到了如何安装Python 以及安装配置VSCode,这节内容我们继续介绍第一个程序的建立: 1.在VS的左上角点击建立一个新的程序,命名为 python_0301_code. ...
- python 有趣的变量_Python进阶之路 3.2有趣的赋值操作
3.2 有趣的赋值操作 赋值操作是再简单不过了,在前面的章节也多次使用了赋值操作.不过Python语言中的赋值操作要有趣得多.例如,可以同时将多个值赋给多个变量. x,y,z = 1,2,3 prin ...
- python设置环境变量_Python设置环境变量
python设置环境变量 We can set an environment variable in Python using os module. Python os module environ ...
- python局部静态变量_python如何设置静态变量
众所周知,Python语言并不支持静态变量,比如下面这样一个应用场景: void foo() { static int count = 0; count ++; } 在Python中无法自然实现这个功 ...
- python 文件路径 变量_python路径变量
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 开发准备cas 的 python sdk 包含了用于访问和操作 cas 的所有 ...
- python清除所有变量_python清除变量
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 否则,抛出异常(具体参见异常说明)删除文件库方法签名:delete()方法说明: ...
- python怎样创建变量_Python变量的创建
Python 是一种动态类型语言,因此变量不需要显式地声明其数据类型.在Python 中,所有的数据都被抽象为"对象",变量通过赋值语句来指向对象,变量赋值的过程就是将变量与对象关 ...
最新文章
- pta两个有序链表的合并_21. 合并两个有序链表
- Codeforces Round #297 (Div. 2)E. Anya and Cubes 折半搜索
- java hbase创建_hadoop组件介绍及python 连接Hbase
- 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一3.4 数据量太大了怎么办
- python奇数和_请问python如何判断奇偶数?
- 让机器学会看图说话:Image Caption任务最新综述
- 调用支付宝PHP接口API实现在线即时支付功能(UTF-8编码)
- mysql 8.0.22_最新版MySQL 8.0.22下载安装超详细教程(Windows 64位)
- BBQ Hard dp + 组合数学 + 建模
- MSP430F5529 DriverLib 库函数学习笔记(八)模数转换模块(ADC12)
- .net VS Java 到底谁吃香?
- java me教程_Java ME基础教程
- Word文档打不开怎么办
- matlab液压仿真实例,基于MATLAB-simulink的液压系统动态仿真.pptx
- 化学式中间的点怎么打?
- php 路由修改密码,TPLINK路由器如何修改管理密码和无线密码)
- 整合springmvc+mybatis+veloctiy三
- VMware宿主机与虚拟机之间的文件夹相互共享(看图操作)
- 迁移学习在医学影像学中的应用
- 微信公众号采集 php,如何采集微信公众号历史消息页
热门文章
- 谈谈Pod在微服务中的运用
- Android 蓝牙扫描
- Android自定义View研究(六)--View中的原点坐标相关问题
- 28.MySQL Variables
- 24. flock() 函数
- 60. cache
- saetv2.ex.class.php,curl out of memory window下PHP调用curl报内存不够
- Linux Mysql5.6安装
- Migrations有两个文件迁移数据的方法
- Xcode模拟器simulators安装