参考:https://blog.csdn.net/ying62506799/article/details/80785994

https://blog.csdn.net/WZ18810463869/article/details/81147167

日志级别:

从低到高依次是:

* DEBUG
* INFO
* NOTICE
* WARNING
* ERROR
* CRITICAL
* ALERT
* EMERGENCY

python中,logging由logger,handler,filter,formater四个部分组成logger是提供我们记录日志的方法;handler是让我们选择日志的输出地方,如:控制台,文件,邮件发送等,一个logger添加多个handler;filter是给用户提供更加细粒度的控制日志的输出内容;formater用户格式化输出日志的信息

配置日志的三种方式:链接https://ccyl.iteye.com/blog/1622453

1、在py程序中完成logger,handler,filter(可无),formater的配置,再使用logging取得logger进行日志操作2、用配置文件的方式配置logging,使用fileConfig(filename,defaults=None,disable_existing_loggers=Ture )函数来读取配置文件。3、使用一个字典方式来写配置信息,然后使用dictConfig(dict,defaults=None, disable_existing_loggers=Ture )函数来完成logging的配置注:第三个参数默认值是True,当它为True的时候,在这之前定义的logging配置就是失效,不能再使用,也就是只有配置文件或者配置字典里有的内容才能使用。

vim logcleanpolicy.ini:

[loggers]                                   #日志器
keys=root,rotatingFileLogger,TimedRotatingFileHandler[logger_root]                               #定义logger的section必须指定level和handlers
level=DEBUG
handlers=consoleHandler[logger_rotatingFileLogger]   #对非root logger,qualname必选,表示在logger层级中的名字,在代码中通过它得到logger
level=DEBUG
handlers=consoleHandler,rotatingFileHandler
qualname=rotatingFileLogger
propagate=0[logger_TimedRotatingFileHandler]
level=DEBUG
handlers=consoleHandler,TimedRotatingFileHandler
qualname=TimedRotatingFileHandler
propagate=0 #propagete=0,表示输出日志,但消息不传递;propagate=1是输出日志,同时消息往更高级别的地方传递 控制台会出现重复日志[handlers]                #处理器
keys=consoleHandler,rotatingFileHandler,TimedRotatingFileHandler[handler_consoleHandler]  #必须指定class和args,class:创建handler的类名,args:传给class所指定的handler类初始化方法参数
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)[handler_rotatingFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('/var/log/di/logcleanpolicy.log', 'a', 50*1024*1024, 10)[handler_TimedRotatingFileHandler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('/var/log/di/logcleanpolicy.log', 'm', 1, 5) [formatters]   #格式器
keys=simpleFormatter[formatter_simpleFormatter]
format = %(asctime)s %(levelname)-5.5s [%(filename)s:%(lineno)s][%(threadName)s] %(message)s

字段说明:

[loggers]
# 定义logger模块,root是父类,必需存在的,其它的是自定义。
# logging.getLogger(NAME)便相当于向logging模块注册了一种日志打印
# name 中用 . 表示 log 的继承关系[logger_root]
# 实现上面定义的logger模块,必需是[logger_xxxx]这样的形式
# [logger_xxxx] logger_模块名称
# level 级别,级别有DEBUG、INFO、WARNING、ERROR、CRITICAL
# handlers 处理类,可以有多个,用逗号分开
# qualname logger名称,应用程序通过 logging.getLogger获取。对于不能获取的名称,则记录到root模块。
# propagate 是否继承父类的log信息,0:否 1:是[handlers]
# 定义handler[handler_infohandler]
# [handler_xxxx]
# class handler类名
# level 日志级别
# formatter,下面定义的formatter
# args handler初始化函数参数[formatters]
# 定义格式化输出[formatter_form01]
# 日志格式
#--------------------------------------------------
# %(asctime)s       年-月-日 时-分-秒,毫秒 2013-04-26 20:10:43,745
# %(filename)s      文件名,不含目录
# %(pathname)s      目录名,完整路径
# %(funcName)s      函数名
# %(levelname)s     级别名
# %(lineno)d        行号
# %(module)s        模块名
# %(message)s       消息体
# %(name)s          日志模块名
# %(process)d       进程id
# %(processName)s   进程名
# %(thread)d        线程id
# %(threadName)s    线程名

使用方式:

import logging
from logging.config import fileConfig
import oslog_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logcleanpolicy.conf')  #不加这话会报错:KeyError: 'formatters'
print (log_file_path)fileConfig(log_file_path)
# TimedRotatingFileHandler中的consoleHandler输出到控制台,TimedRotatingFileHandler输出日志到文件
logger= logging.getLogger(name="TimedRotatingFileHandler")
logger.error('error')

更改系统时间多次运行该脚本,看是否在指定目录生成5份文件

配置文件写入logging日志相关推荐

  1. python写日志文件_Python logging日志模块 配置文件方式

    在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等; Python内置 非常强大的日志模块 ==> logging 今 ...

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

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

  3. Python logging 日志配置文件模板

    基本参数配置介绍 [loggers] 定义多个logger记录器名字 [handlers] 定义多个处理器 [fomatters] 定义多个格式器 三个主要参数,定义完三个参数后就是进行不同的设置 具 ...

  4. python 多线程多进程logging系统写入同一日志文件处理方法

    多线程进程,logging写入日志到同一文件的处理方法 python logging系统切分问题 TimedRotatingFileHandler切分逻辑源码 解决方案 python logging系 ...

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

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

  6. Python接口自动化之logging日志

    VOL 122 11 2020-05 今天距2021年234天 这是ITester软件测试小栈第122次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  7. python中logging模块详解_python logging日志模块详解

    logging 日志模块详解 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这 ...

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

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

  9. Python3进阶--正则表达式、json、logging日志配置、数据库操作、枚举、闭包、匿名函数和高阶函数、time、datetime

    第一章 变量.常用循环体.代码结构.代码练习 第二章 列表.元组等数据结构.字符串驻留机制及字符串格式化操作 第三章 函数.面向对象.文件操作.深浅拷贝.模块.异常及捕获 第四章 项目打包.类和对象高 ...

最新文章

  1. 基于OpenCV的网络实时视频流传输
  2. 自动驾驶激光雷达物体检测技术
  3. POJ3041 最小顶点覆盖
  4. zend framework1.11使用原生代码获取结果
  5. 让人“蛋碎”的ie兼容问题
  6. ElementUI Pagination 分页器绑定数据
  7. 【bzoj2326】[HNOI2011]数学作业 矩阵乘法
  8. python大游戏_玩游戏就能学Python?太炫酷了!
  9. 百度搜索(URL)中汉字转为什么编码问题
  10. ArcGIS——计算几何——面积/周长禁用
  11. dm数据库 linux版下载,达梦(DM)数据库Linux部署安装
  12. python单例模式selenium driver实现单例
  13. Android性能优化篇——友盟U-APM云真机
  14. epicor数据表增加字段
  15. 【云和恩墨大讲堂】SQL 审核 | 细致入微,方显价值
  16. SPM AC原点校正
  17. Android 快速集成谷歌账户登录
  18. python零基础二
  19. 学计算机为什么上岗之前要培训,浙江公务员面试模拟题华图解析
  20. 黑解(ICCID)证书备份

热门文章

  1. Linux中644、755、777权限详解
  2. DNS原理与手撸域名之自己解析域名
  3. java-php-python-ssm信息工程学院办公经费管理系统服务端计算机毕业设计
  4. 安卓TV开发(八) 移动智能终端多媒体爬虫技术 获取加载网页视频源
  5. 关于ASUS X55V win7音响或者耳机没有声音的问题
  6. ios 开发艰难之路
  7. 关于 RAID 5 与热备份(Hot Spare)
  8. MYSQL between用法
  9. 【商城应用】类余额宝功能体系设计
  10. 自回归滑动平均模型ARMA