Python连载29-log的使用需求实现举例
一、Format类
1.直接实例化
2.可以继承Format添加特殊字符
3.三个参数
(1)fmt:指定消息格式化字符串,如果不指定该参数则默认使用message的原始值
(2)datemt:指定日期格式字符串,如果不指定该参数,则默认使用“%Y-%m-%d %H:%M:%S"
(3)style:Python3.2新增的参数,可取值为”%“,“{”和“¥”,如果不指定默认使用“%”
二、Filter类
1.可以被Handler和Logger使用
2.控制传递过来的信息的具体内容。
三、例子
#现在有一下几个日志记录的需求:
#(1)要求将所有级别的所有日志写入磁盘文件
#(2)all.log文件中记录所有的日志信息,日志格式为:日期和时间-日志级别-日志信息
#(3)error.log文件中单独记录error及以上级别的日志信息,日志格式:日期和时间-日志级别-文件名【:行号】- 日志信息
#(4)要求all.log在每天凌晨进行日志切割
#分析
#(1)要记录所有级别的日志,因此日志器的有效level需要设置为最低级别 --DEBUG
#(2)日志需要被发送到两个不同的目的地,因此需要为日志设置两个handler;另外。两个目的地都是磁盘文件。因此这两个handler都是与fileHander
#(3)all.log要求按照时间进行日志切割,因此它需要logging.handler.TimeRotatingFileHandler;而error.log没有要求日志切割。因此
#(4)两个日志文件的格式不同,因此需要对两个handler分别进行设置格式器
import logger import logging.handlers import datetime #定义Logger logger = logging.getLogger("mylogger") logging.setLevel(logging.DEBUG) rf_handler = logging.handlers.TimedRotatingFileHandler("all.log",when="midnight",interval=1,backupCount=7,atTime=None) rf_handler.setFormatter(logging.Formatter("%(asctime)s-%(levelname)s-%(message)s")) f_handler = logging.FileHandler("error.log") f_handler = setLevel(logging.ERROR) f_handler.setFormat(logging.Formatter("%(asctime)s-%(levelname)s-%(filename)s[:%(lineno)d-%(message)s)") #把相应的处理器组装到logger上 logger.addHandler(rf_handler) logger.addHandler(f_handler) logger.debug("debug message") logger.info("info message") logger.warning("warning message") logger.error("error message") logger.critical("critical message")
四、源码
d23_3_log_example.py
地址:https://github.com/ruigege66/Python_learning/blob/master/d23_3_log_example.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换
- Python使用logging模块实现打印log到指定文件的方法
- Python连载30-多线程之进程&线程&线程使用举例
- python也能实现类初始化方法需求更改的功能
- 一步一步学Silverlight 2系列(29):使用Transform实现更炫的效果(上)
- Python:使用threading模块实现多线程编程三[threading.Thread类的重要函数]
- 一步一步学Silverlight 2系列(29):使用Transform实现更炫的效果(上)
- 使用Python实现Telnet远程登录
- Python:使用threading模块实现多线程编程七[使用Condition实现复杂同步]
- Python:使用threading模块实现多线程编程二[两种方式起线程]
- 一步一步学Silverlight 2系列(29):使用Transform实现更炫的效果(上)
- 解读Android LOG机制的实现:(6)c/c++域使用LOG
- python+httplib实现HTTP POST提交数据,使用Basic Authentication(基本验证)做登陆验证
- 举例说明如何在android中实现设置黑名单的功能--AudioManager、PhoneStateListener的使用
- Python:使用threading模块实现多线程编程八[使用Event实现线程间通信]
- 【loadrunner使用篇】LR调用QTP脚本来实现性能测试(一次现场特殊需求的解决方案)
- Python:使用threading模块实现多线程编程六[可重入锁RLock]
- Python:使用threading模块实现多线程编程二[两种方式起线程]
- 一步一步学Silverlight 2系列(29):使用Transform实现更炫的效果(上)
- Python连载系列之Python语法基础1:开始使用Python
- C++_模板举例_使用模板实现集合类(堆栈)