首页 / 日志 / Python 日志打印模块
Python 日志打印模块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python 日志打印模块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3354字,纯文字阅读大概需要5分钟。
内容图文
1 logging模块简介
logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点:
- 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息;
- print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决定将信息输出到什么地方,以及怎么输出;
2 logging模块使用
2.1 基本使用
配置logging基本的设置,然后在控制台输出日志,
1 import logging 2 logging.basicConfig(level = logging.INFO,format = ‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘) 3 logger = logging.getLogger(__name__) 45 logger.info("Start print log") 6 logger.debug("Do something") 7 logger.warning("Something maybe fail.") 8 logger.info("Finish")
logging中可以选择很多消息级别,如debug、info、warning、error以及critical。通过赋予logger或者handler不同的级别,开发者就可以只输出错误信息到特定的记录文件,或者在调试时只记录调试信息。
logging.basicConfig函数各参数:
filename:指定日志文件名;
filemode:和file函数意义相同,指定日志文件的打开模式,‘w‘或者‘a‘;
format:指定输出的格式和内容,format可以输出很多有用的信息,
参数:作用
%(levelno)s:打印日志级别的数值
%(levelname)s:打印日志级别的名称
%(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s:打印当前执行程序名
%(funcName)s:打印日志的当前函数
%(lineno)d:打印日志的当前行号
%(asctime)s:打印日志的时间
%(thread)d:打印线程ID
%(threadName)s:打印线程名称
%(process)d:打印进程ID
%(message)s:打印日志信息
datefmt:指定时间格式,同time.strftime();
level:设置日志级别,默认为logging.WARNNING;
stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略;
2.2 将日志写入到文件
2.2.1 将日志写入到文件
设置logging,创建一个FileHandler,并对输出消息的格式进行设置,将其添加到logger,然后将日志写入到指定的文件中
1 import logging 2 logger = logging.getLogger(__name__) 3 logger.setLevel(level = logging.INFO) 4 handler = logging.FileHandler("log.txt") 5handler.setLevel(logging.INFO) 6 formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘) 7handler.setFormatter(formatter) 8logger.addHandler(handler) 910 logger.info("Start print log") 11 logger.debug("Do something") 12 logger.warning("Something maybe fail.") 13 logger.info("Finish")
下面是封装的一个 日志打印助手:
1 import logging.handlers 2 3 """ 4 %(levelno)s: 打印日志级别的数值 5 %(levelname)s: 打印日志级别名称 6 %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0] 7 %(filename)s: 打印当前执行程序名 8 %(funcName)s: 打印日志的当前函数 9 %(lineno)d: 打印日志的当前行号 10 %(asctime)s: 打印日志的时间 11 %(thread)d: 打印线程ID 12 %(threadName)s: 打印线程名称 13 %(process)d: 打印进程ID 14 %(message)s: 打印日志信息 15 """ 16 17 class LogAssistant: 18 logger = None 19# 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL。这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,2021 levels = {"d": logging.DEBUG, 22"i": logging.INFO, 23"w": logging.WARNING, 24"e": logging.ERROR, 25"c": logging.CRITICAL} 2627 log_level = "d"28 log_file = "log.txt"29 log_max_byte = 10 * 1024 * 1024; 30 log_backup_count = 5 3132 @staticmethod 33def getLogger(): 34if LogAssistant.logger isnot None: 35return LogAssistant.logger 3637 LogAssistant.logger = logging.Logger("LogAssistant") 38 log_handler = logging.handlers.RotatingFileHandler(filename=LogAssistant.log_file, 39 maxBytes=LogAssistant.log_max_byte, 40 backupCount=LogAssistant.log_backup_count) 41 log_fmt = logging.Formatter("[%(asctime)s][%(levelname)s][func:%(funcName)s][thread:%(thread)d]: %(message)s") 42 log_handler.setFormatter(log_fmt) 43 LogAssistant.logger.addHandler(log_handler) 44 LogAssistant.logger.setLevel(LogAssistant.levels.get(LogAssistant.log_level)) 45return LogAssistant.logger 4647def output_test(): 48 logger = LogAssistant.getLogger() 49 logger.debug("this is a debug msg!") 5051if__name__ == "__main__": 52 output_test()
原文:https://www.cnblogs.com/bu123/p/9484683.html
内容总结
以上是互联网集市为您收集整理的Python 日志打印模块全部内容,希望文章能够帮你解决Python 日志打印模块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。