(1) 简介

日志调试输出信息
日志级别: critical > error > warning > info > debug,notset 级别越高打印的日志越少,反之亦然,即
debug : 打印全部的日志(notset等同于debug)
info : 打印info,warning,error,critical级别的日志
warning : 打印warning,error,critical级别的日志
error : 打印error,critical级别的日志
critical : 打印critical级别

(2) 使用方法

  • 输出消息至终端
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 输出消息至终端import logging
import oslogger_fmt ='%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log')   #输出路径及路径名
formatter = logging.Formatter(logger_fmt)  #输出格式logger_console_handler = logging.StreamHandler()    #输出到终端
logger_console_handler.setFormatter(formatter)   # 设置输出格式logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_console_handler)
else:logger.removeHandler(logger_console_handler)
logger.setLevel(logging.INFO)   #设置输出级别logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')
  • 输出消息至文件
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 输出消息至指定路径import logging
import oslogger_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log') #存储路径(路径名要正确)
print(Logneme)
formatter = logging.Formatter(logger_fmt)
logger_file_handler = logging.FileHandler(Logneme)
logger_file_handler.setFormatter(formatter)logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_file_handler)
else:logger.removeHandler(logger_file_handler)
logger.setLevel(logging.INFO) logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')
  • 输出消息至文件并定期(每天)删除
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 输出消息至文件并定期(每天)删除import logging
import os
import re
from logging.handlers import TimedRotatingFileHandlerlogger_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log')
formatter = logging.Formatter(logger_fmt)
logger_file_handler = TimedRotatingFileHandler(filename=Logneme, when='MIDNIGHT', interval=1, backupCount=2)
logger_file_handler.suffix = "%Y-%m-%d.log"
logger_file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
logger_file_handler.setFormatter(formatter)logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_file_handler)
else:logger.removeHandler(logger_file_handler)
logger.setLevel(logging.INFO)logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')

&1)TimedRotatingFileHandler()
功能:用于定期删除日志文件
参数:
filename: 文件名
when: ‘W’, ‘D’, ‘H’, ‘M’, ‘S’, ‘MIDNIGHT’ 分别代表’周’,‘天’,‘时’,‘分’,‘秒’
interval: 时间间隔
backupCount:日志数目
比如,我上面的例子即是每隔一天产生一个日志,超过两个日志将覆盖旧的日志

&2)logger_file_handler.suffix
功能:在日志名后加上后缀

&3)logger_file_handler.extMatch
功能:匹配日志名的后缀

注意:想要实现周期性删除任务,这三个函数都是必要的

  • 输出消息至文件超过指定大小删除
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 输出消息至文件并文件超过指定大小清零import logging
import os
from logging.handlers import RotatingFileHandlerlogger_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log')
formatter = logging.Formatter(logger_fmt)
logger_file_handler = RotatingFileHandler(filename=Logneme, maxBytes = 1*1024, backupCount=2)
logger_file_handler.setFormatter(formatter)logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_file_handler)
else:logger.removeHandler(logger_file_handler)
logger.setLevel(logging.INFO)logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')
  • 终极版:可输出日志到终端并且输出到文件且文件定期删除

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 终极版:可输出日志到终端并且输出到文件且文件定期删除import logging
import os
import re
from logging.handlers import TimedRotatingFileHandlerlogger_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log')
formatter = logging.Formatter(logger_fmt)
logger_file_handler = TimedRotatingFileHandler(filename=Logneme, when='MIDNIGHT', interval=1, backupCount=2)
logger_file_handler.suffix = "%Y-%m-%d.log"
logger_file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
logger_file_handler.setFormatter(formatter)logger_console_handler = logging.StreamHandler()
logger_console_handler.setFormatter(formatter)logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_file_handler)logger.addHandler(logger_console_handler)
else:logger.removeHandler(logger_file_handler)logger.removeHandler(logger_console_handler)
logger.setLevel(logging.INFO)logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')

以下隐藏内容为源代码,有需求可以下载,当作是对本站的支持,谢谢。

[erphpdown]解压密码:ZMJPY123[/erphpdown]

神奇的python(四)之logging日志文件系统相关推荐

  1. Python爬虫笔记——logging日志函数的使用

    logging官网介绍 python logging 日志使用 1.日志级别 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL. DEBUG:详 ...

  2. PYthon常用模块 logging 日志

    一 (简单应用) import logging logging.debug('debug message') logging.info('info message') logging.warning( ...

  3. python中的logging日志

    logging使用 import logging import os from logging import handlers from constants.constants import Cons ...

  4. python 技术篇-使用logging日志模块自定义时间格式

    首先看一下效果图: 下面是我定义的日志格式: import logginglogging.basicConfig(filename = path + 'log_' + today_date + '.t ...

  5. 操作系统服务:logging日志记录模块

    许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪. 在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...

  6. python log日志_Python中logging日志的四个等级和使用

    1. logging日志的介绍 在现实生活中,记录日志非常重要,比如:银行转账时会有转账记录:飞机飞行过程中,会有个黑盒子(飞行数据记录器)记录着飞机的飞行过程,那在咱们python程序中想要记录程序 ...

  7. python logging日志分割_python logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...

  8. python logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 原出处博客 1. logging日志模块介绍 ...

  9. python log文件如何不写入syslog_python 自动化之路 logging日志模块

    logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方 http://blog.csdn.net/zyz51 ...

最新文章

  1. Android零基础入门第30节:两分钟掌握FrameLayout帧布局
  2. 深入解析JNA—模拟C语言结构体
  3. 解决sourceTree的git clone 报SSH密钥认证失败的问题
  4. VSFTPD 安装与配置
  5. 微软开放技术热烈祝贺开源社成立!
  6. 在access中一列称为_ACCESS考试_笔试
  7. 【转】中国历史上下五千年之朝代变迁
  8. 服务器显示raid报警,Raid为什么会出现故障?RAID/服务器恢复
  9. 【基于Python的Selenium2自动化测试】04 - 模拟126邮箱的登录
  10. 如何利用一维数组实现二维数组的多列自由升降序排序过程详解
  11. 【Python】html格式转md格式
  12. 基于JDBC的JavaWeb开发项目之——网上教务系统
  13. 系统重构的原则代码重构的原则
  14. I.MX8M mini物联网开发板框架及屏幕接口详解
  15. 群晖、威联通NAS硬盘本地化,使用RaiDrive通过WebDAV实现内网挂载
  16. linux qnx 开发平台,QNX学习笔记之QNX Momentics IDE开发工具使用笔记
  17. MAC OS部署 TOMCATJ2EE项目
  18. pd.to_numeric
  19. 【Hard to Park】Estimating Parking Difficulty at Scale
  20. PFM格式图像和读取middlebury 数据集

热门文章

  1. 如何使用facenet详解_松下电吹风如何使用 松下电吹风使用方法及维护【详解】...
  2. php 三种传递函数,php – 是否可以将传递函数传递给包含的文件?
  3. python爬取网页上的特定链接_自学python爬虫二:如何正常操作urllib2通过指定的URL抓取网页内容...
  4. C++OpenCV:三角形插值、线面的交点
  5. Bootstrap-CSS-排版
  6. 0x00000116
  7. 自动论文生成器 python_python生成器
  8. python 字符串去重且相同字符最多出现2次_【Python】获取字符串中出现次数最多/少的字符...
  9. phpcmsV9 邮箱注册:邮箱验证(不改代码、含演示截图) - 配置篇
  10. 陌屿授权系统v2.0源码