Python学习系列之logging模块
实例一:日志写进一个文件
代码:
import logging logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', #定义日志格式
datefmt='%Y-%m-%d %H:%M:%S %p', #定义asctime
filename='test.log', #定义日志文件
filemode='a') #定义写入模式,'a'是追加的意思 login():
while True:
try:
name = input('Input user name:')
password = int(input('Input password:')) #这里故意转成整型,触发异常
if name == 'andy' and password == 'nopasswd':
print('logging succeed!')
except ValueError as e:
logging.info(e) #这里写入日志
break if __name__ == '__main__':
login()
format解释:
- asctime:时间,按照datefmt定义的显示,2018-01-10 14:50:25
- filename:报错的python文件名称
- line:%(lineno)d:报错的行数
- levelname:报错级别
- message:报错的信息
测试:
[root@admin_bak shell]# python3.6 test_log.py
Input user name:asdasd
Input password:asdsad #这是输入字符串,触发异常
查看日志
2018-01-10 11:54:40 AM test_log.py test_log.py[line:21] DEBUG invalid literal for int() with base 10: 'asdsad'
实例二:实现每天一个日志文件
代码:
import time import logging
import logging.handlers LOG_FILE = "ping.log" #设置日志文件名称
logger = logging.getLogger() #实例化logging
logger.setLevel(logging.INFO) #设置日志级别 #添加TimedRotatingFileHandler
#定义一秒换一次log文件的handlers
#保留3个旧log文件
fh = logging.handlers.TimedRotatingFileHandler(LOG_FILE, when='D', interval=1, backupCount=10)
#定义asctime
datefmt = '%Y-%m-%d %H:%M:%S'
#定义日志格式
format_str = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s'
formatter = logging.Formatter(format_str, datefmt)
fh.setFormatter(formatter)
logger.addHandler(fh) while True:
time.sleep(0.1)
logging.info("test")
TimedRotatingFileHandler
TimedRotatingFileHandler(filename [,when [,interval [,backupCount]]])#需要传的参数
filename:日志文件
when:
"S":second
"M":minutes
"H":Hours
"D":Days
"W":week day (0=monday)
interval:是指等待多少个"when"时间后,logging会自动新建文件,比如when='S',interval=10,就是10个一秒后新建文件,也就是10秒,when='D',interval=1,就是一天一个文件
backupCount:保留日志文件的个数
Python学习系列之logging模块的更多相关文章
- Python学习系列(六)(模块)
Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...
- Python学习系列(九)(IO与异常处理)
Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Pytho ...
- Python学习系列(七)( 数据库编程)
Python学习系列(七)( 数据库编程) Python学习系列(六)(模块) 一,MySQL-Python插件 Python里操作MySQL数据库,需要Python下安装访 ...
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- Python学习系列(四)Python 入门语法规则2
Python学习系列(四)Python 入门语法规则2 2017-4-3 09:18:04 编码和解码 Unicode.gbk,utf8之间的关系 2.对于py2.7, 如果utf8>gbk, ...
- Python学习系列(八)( 面向对象基础)
Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类 ...
- Python学习系列(四)(列表及其函数)
Python学习系列(四)(列表及其函数) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) Python学习系列(三)(字符串) 一.基本概念 1,列表是什么? ...
- Python学习系列(三)(字符串)
Python学习系列(三)(字符串) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) 一个月没有更新博客了,最近工作上有点小忙,实在是没有坚持住,丢久又有感觉写的必要了 ...
- Python学习系列(二)(基础知识)
Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比, ...
随机推荐
- verilog behavioral modeling ---Block statements
block statements : 1. sequential block : begin-end block 2.parallel block : fork - join bloc ...
- 二、Pandas库与数据处理
# Author:Zhang Yuan import pandas as pd import numpy as np #Pandas提供了两大数据结构:一维结构的Series类型.二维结构的DataF ...
- 爬虫练习四:爬取b站番剧字幕
由于个人经常在空闲时间在b站看些小视频欢乐一下,这次就想到了爬取b站视频的弹幕. 这里就以番剧<我的妹妹不可能那么可爱>第一季为例,抓取这一番剧每一话对应的弹幕. 1. 分析页面 这部番剧 ...
- JAVA面向过程VS面向对象
面向过程 面向过程是一种自顶向下的编程,强调行为过程,可扩展性可维护性差. 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源. 单片机.嵌入式开发.Linux/Unix等一般 ...
- PAT Basic 1010
1010 一元多项式求导 设计函数求一元多项式的导数.(注:x^n^(n为整数)的一阶导数为n*x^n-1^.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数). ...
- Pyhton开发:Python基础杂货铺
if 语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. Python中if语句的一般形式如下所示: if condition_1: stateme ...
- 从PHP5到PHP7的注意事项——PHP7全面删除Mysql扩展支持
PHP删除了一些函数,其中是吓人的是两个: 1. ereg_* 系列的正则函数 2. mysql_* 系列的数据库连接函数 PHP7全面删除Mysql扩展支持,原本的mysql_*系列函数将在mysq ...
- python3--命名空间字典
命名空间字典 我们学到了模块的命名空间实际上是以字典的形式实现的,并且可以由内置属性__dict__显示这一点.类和实例对象也是如此:属性点号运算其实内部就是字典的索引运算,而属性继承其实就是搜索连结 ...
- redis中redis.conf配置文件
redis.conf文件配置解释 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize yes 2. 当Redis以守护进程方式运行时,Red ...
- 简单介绍一下solr?
简单介绍一下solr? Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可 ...