python笔记--内置模块之logging

logging模块                                                                                                                           

顾名思义,用于程序日志输出,可以设置日志级别、格式、输出方式等,基本使用方法如下:

1、logging.basicConfig方式

简单的配置,只能选择单独输出到屏幕或输出到文件,不能同时输出。例如:

#-*- coding:utf-8 -*-
#只能选择输出到屏幕或文件
import logging
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a,%d %b %Y %H:%M:%S',
                    filename='test.log',
                    filemode='a')
'''
参数:
level:指定输出的日志级别
format:指定日志格式,包括:
    asctime:时间
    filename:日志归属的文件名称
    lineno:日志对应代码在归属文件中的行号
    levelname:日至最低级别,不指定默认为warning
    message:具体的日志内容,
datefmt:指定具体的时间格式,如果不指定,asctime将使用默认格式,如:2018-05-05 22:07:30,578 
filename:指定日志文件名称,可携带具体路径,不指定该参数时日志输出到屏幕
filemode:指定日志写入模式,默认为'a'表示追加,可以指定为'w'表示覆盖
'''
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

上面例子将日志输出到test.log文件,内容:

Sat,05 May 2018 22:25:14 2.py[line:22] DEBUG debug message
Sat,05 May 2018 22:25:14 2.py[line:23] INFO info message
Sat,05 May 2018 22:25:14 2.py[line:24] WARNING warning message
Sat,05 May 2018 22:25:14 2.py[line:25] ERROR error message
Sat,05 May 2018 22:25:14 2.py[line:26] CRITICAL critical message

如果,只需要日志输出到屏幕,只需要将filename='test.log'和filemode='a'两行注释掉即可。

2、logging.getLogger方式

完整配置,即可单独输出到屏幕或文件,也可同时输出。例如:

#-*- coding:utf-8 -*-
#日志输出更灵活,可以分别或同时输出到屏幕和文件
import logging

#创建一个logger对象
logger=logging.getLogger()

#创建一个文件输出流handler,用于写入日志文件
fm=logging.FileHandler('test1.log')

#再创建一个标准输出流handler,用于输出到屏幕
pm=logging.StreamHandler()

#创建一个日志格式对象
formatter=logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')

#为两个handler添加日志格式
fm.setFormatter(formatter)
pm.setFormatter(formatter)

#为logger对象添加handler
logger.addHandler(fm)
logger.addHandler(pm)

#设置输出日志级别,默认只输出warning以上
logger.setLevel(logging.DEBUG)

logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')

上面例子,将日志同时输出到屏幕和test1.log文件,内容:

2018-05-05 22:32:52,800 3.py[line:28] DEBUG debug message
2018-05-05 22:32:52,800 3.py[line:29] INFO info message
2018-05-05 22:32:52,800 3.py[line:30] WARNING warning message
2018-05-05 22:32:52,800 3.py[line:31] ERROR error message
2018-05-05 22:32:52,800 3.py[line:32] CRITICAL critical message

logger.addHandler()决定日志输出方向,如果只输出到某一方面,可以将另一行注释掉。

原文地址:http://blog.51cto.com/fengjicheng/2113135

时间: 2024-11-17 00:02:46

python笔记--内置模块之logging的相关文章

python笔记--内置模块

python常用内置模块 类似于函数式编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来说,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个.py文件组成的代码集合就称为模块. 模块分为三种:自定义模块.内置模块.开源模块http://pypi.python.org 一.导入模块 方法: import module from module.xx.xx import xx from module.xx.xx import 

Python笔记_01列表 和元祖

Python笔记 第一章 列表和元祖 1.通用序列操作 所有序列都可以进行某些特定操作,包括:索引(indexing).分片(slicing).加(adding).乘(multiplying)以及检查某元素是否属于列表成员. 迭代:依次对序列中的每个元素重复执行某些操作. 序列的索引:通过元素在列表中的位置可以定位到该元素,这就是列表的索引,使用类似于list[0]对元素进行索引,索引0指向第一个元素.也可使用负数对元素进行索引,使用负数对元素索引时,列表中的最后一个元素由-1表示,例如list

玩蛇(Python)笔记之基础Part3

玩蛇(Python)笔记之基础Part1 一.集合 1.set 无序,不重复序列 {}创建,直接写元素 2.set功能 __init__()构造方法,,使用强制转换就会调用此方法 1 set1 = {'year', 'jiujiujiu'} 2 print(type(set1)) 3 # 创建集合 4 s = set() # 创建空集合 5 li = [11, 22, 11, 22] 6 s = set(li) set 3.集合的基本操作 1 # 操作集合 2 s1 = set() 3 s1.a

Python笔记(四)

在<Python笔记(三)>中,我记录关于Python中序列问题的知识.个人觉得确实比Java中的集合框架简单.之前也说了,Python是一种高级面向对象的语言,它的每一个变量都称为对象.今天我接触了面向对象的编程.下面是这篇博客的目录: 1.类与对象 2.输入输出 3.异常 类与对象: 我们都知道面向对象的语言具备四个特性:抽象,继承,封装,多态.Java,C++是这样,Python也不例外.在Python中,我们定义一个类,使用关键字class.形式如下:class classname:.

python笔记 - day7-1 之面向对象编程

python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: sele是什么? self是一个python自动会给传值得参数: 哪个对象执行方法,self就是哪个对象: 构造方法: 类中有一个特殊的方法,__init__,类()自动执行: 面向对象,三大特性: 封装,继承,多态:  

Python笔记之不可不练

如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知>中,尽管本文是自己学习Python过程中的总结,在大神看来,或许略欠火候,希望批评指正,万分感谢! 本文是作者学习成绩的见证,请尊重劳动成果!版权归作者和博客园共有,欢迎转载,但请保留本文出处http://www.cnblogs.com/itred/p/4687287.html ,  作者:itRed

python笔记之列表和元组

pyhton的列表和元组,说白了其实就是一种数据结构,只是在python当中更加方便的去操作而已.. 1.序列 其实字符串就是采取序列的方式的: string = "hello" print string[0] 结果为:h 对比其他编程语言,python还有一个负值索引的概念: 序列的分片: first = [0,1,2,3,4,5,6,7,9] print first[1:6:2] 针对first[1:6:2]这条语句: 1代表的起始索引,不写,默认为0 6代表结束索引,不写默认为所

整理python笔记

1.python笔记:while.if.for.编码 2.  模拟登陆 3.  python笔记:字符.列表.字典.元祖.数据类型

玩蛇(Python)笔记之基础Part2

玩蛇(Python)笔记之基础Part2 一.列表 1.列表 别的语言叫数组 python牛逼非要取个不一样的名字 1 age = 23 2 name = ["biubiubiu", "jiujiujiu", 22, age] 3 # namecopy = name 4 # namecopy.pop() 5 print(name) 6 # print(namecopy) List 2.列表取值 正常index 从零开始,,取倒数加负号 倒数第一就是[-1] 3.列表