logging 模块

一、logging模块级别及常用函数

  默认的level是logging.Warning,低于该级别的就不输出了。级别排序:Critical> Error > Warning > Info > Debug

  Logging.Formatter:配置日志的格式,在里面自定义设置日期和时间,输出日志的时候将会按照设置的格式显示内容。

  Logging.Logger:为程序提供记录日志的接口;判断日志所处级别,并判断是否要过滤;根据其日志级别将该条日志分发给不同handler
  addHandler():添加一个Handler

  removeHandler():删除一个Handler
  addFilter():添加一个Filter,过滤作用

  setLevel():设置级别

  setFormatter():设置Formatter
  Logging.Handler:Handler基于日志级别对日志进行分发,如设置为WARNING级别的Handler只会处理WARNING及以上级别的日志。

  logging.basicConfig: 配置日志级别和日志内容输出格式

  help(logging.Formatter):

    %(name)s                   Logger的名字
    %(levelno)s                打印日志级别的数值
    %(levelname)s           打印日志级别的名称
    %(pathname)s            打印当前执行程序路径,相当于sys.argv[0]
    %(filename)s              打印当前执行程序名
    %(module)s                调用日志输出函数的模块名
    %(lineno)d                  打印日志的当前行号
    %(funcName)s           打印日志的当前函数
     %(created)f                当前时间,用UNIX标准的表示时间的浮点数表示
    %(asctime)s                打印日志创建时间
     %(msecs)d                  Millisecond portion of the creation time
    %(relativeCreated)d    输出日志信息时的,自Logger创建以来的毫秒数
    %(thread)d                  打印线程ID
     %(threadName)s        打印线程名称
    %(process)d                打印日志进程ID
     %(message)s              打印日志信息

二、日志输出

 1 import logging
 2 import os.path
 3 import time
 4 
 5 
 6 logger = logging.getLogger()   # 创建一个logger
 7 logger.setLevel(logging.INFO)  # Log等级总开关
 8 
 9 # 创建一个handler,用于输出日志到console,若只需输出到文件,此两行代码去掉
10 ch = logging.StreamHandler()
11 ch.setLevel(logging.WARNING)  # 输出到console的log等级的开关
12 
13 # 创建一个handler,用于写入日志文件,若只需输出到console,此六行代码去掉
14 rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
15 log_path = os.path.dirname(__file__) + '/Logs/'
16 log_name = log_path + rq + '.log'
17 logfile = log_name
18 fh = logging.FileHandler(logfile, mode='w')
19 fh.setLevel(logging.DEBUG)  # 输出到file的log等级的开关
20 
21 # 定义handler的输出格式
22 ch.setFormatter(logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"))   # 若只需输出到文件,此行代码去掉
23 fh.setFormatter(logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")) # 若只需输出到console,此行代码去掉
24 25 # 将logger添加到handler里面 26 logger.addHandler(ch)  # 若只需输出到文件,此行代码去掉 27 logger.addHandler(fh) # 若只需输出到console,此行代码去掉 28 29 # 日志内容 30 logger.debug('Debug message') 31 logger.info('Info message') 32 logger.warning('Warning message') 33 logger.error('Error message') 34 logger.critical('Critical message')

 

转载于:https://www.cnblogs.com/skyliao/p/9512145.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据项目中的QA需要迎接新的挑战

大数据项目中的QA需要迎接新的挑战根据IDC全球半年度大数据和分析支出指南的最新预测,到2022年全球大数据和业务分析解决方案的收入将达到2600亿美元。在大数据和业务分析解决方案上投资增长最快的行业包括银行(复合年增长率13.3%)、医疗、保…

spring源码分析之spring-core总结篇

1.spring-core概览 spring-core是spring框架的基石,它为spring框架提供了基础的支持。 spring-core从源码上看,分为6个package,分别是asm,cglib,core,lang,objenesis和util。 1.1 asm 关于as…

五分钟搞懂后缀数组!

为什么学后缀数组 后缀数组是一个比较强大的处理字符串的算法,是有关字符串的基础算法,所以必须掌握。 学会后缀自动机(SAM)就不用学后缀数组(SA)了?不,虽然SAM看起来更为强大和全面,但是有些SAM解决不了的问题能被SA解…

spring-core

spring最核心的组件是BeanFactory,看了源码才发现,BeanFactory并非定义在spring-core中,那spring-core都有啥东东? spring-core主要提供以下服务,为BeanFactory的定义提供基础服务。 1, ConversionService Conversi…

nginx配置静态文件过期时间

1. 编辑虚拟主机配置文件/usr/local/nginx/conf/vhosts/huangzhenping.conf 说明:采用location方式 12345678910location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${access_log off;expires 1d;}location ~ \.(js|css){access_log off;expires 1d;}2. 检查配置文件&#x…

vue 移动端在div上绑定click事件 失效

在.vue的文件中使用了better-scroll,在div标签上绑定click事件后,无效。 原因:使用了better-scroll,默认它会阻止touch事件。所以在配置中需要加上click: true 即可解决 mounted(){this.$nextTick(() > {let bscrollDom this.…

Java中的钩子方法

钩子方法是啥 钩子顾名思义就是用来挂东西的。那么要挂东西必须有个被挂的东西,要不就是铁环、要不就是墙的边沿。所以要能挂住东西必须要有个被勾住的铁环,要一个钩子。那么在java中也是同样的原理,你首先需要一个被挂在的东西,一…

启动tomcat出现too many connections的原因及解决方法

感谢分享,原文地址:http://blog.sina.com.cn/s/blog_e7e07ec30102vsba.html一、原因 产生too many connections 的直接原因是因为数据库提供的连接被全部占满了。数据库可以提供多少连接,可以再my.cnf(linux)或者my.ini(windows)下设定。这个…

Spring Beans 初始化流程分析

测试用例 依然使用这个官网上的用例,来进行调试; Person.java package org.shangyang.spring.container;/**- - author shangyang**/public class Person {String name;Person spouse;public String getName() {return name;}public void setName(Stri…

剑指offer(65)矩阵中的路径

题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个…

VSCode中怎么改变文件夹的图标

昨天更新了VSCode后我的文件夹图标莫名其妙的没有了,变成了下图这样 看着真的让我难受的头皮发麻,本来打代码就头发少,难道非要让我变成秃头,不可能不可能,所以我找了找怎么解决 来,各位看官上眼 如图所示 …

jdk1.8以前不建议使用其自带的Base64来加解密

JDK1.8之前的base64是内部测试使用的代码,不建议生产环境使用,而且未来可能会移除, JDK1.8提供最新可以正式使用的Base64类, 不要使用JDK中自带的sun.misc.BASE64Decoder这个类去BASE64, 这个会在后面多加换行。使用ap…

Redis的五大数据类型

1.String(字符串) String是Redis最基本的类型,一个Key对应一个Value。 String类型是二进制安全的,意思是Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。 String类型是Redis最基本的数据类型&#xff0c…

springxml解析

1.XML验证模式的认识 首先XML的验证模式有两种:DTD和XSD。 DTD文档类型定义,是XML约束模式语言。它是为了保证XML文档格式正确有效的方法。通过XML文档和DTD文档的比较来判断XML是否符合规范。(现在我很少见,不知道是不是淘汰了) 举个例子&…

jq函数绑定与解绑

最近学到几个新的jq函数 1、bind()绑定函数 2、unbind()解绑函数 3、add() .给元素追加字符串 4、addClass() 给某元素增加class属性值转载于:https://www.cnblogs.com/bigwang1126/p/9566556.html

微信小程序时间标签与范围联动设计实现

微信小程序时间标签与范围联动设计实现?最近忙于一个有关数据管理的微信小程序开发,遇到了上图情况,虽然很简单,还是整理一下。若有错误,请广大朋友们指正。 使用微信小程序组件radio-group、picker,用wxss…

github中的watch、star、fork的作用

在每个 github 项目的右上角,都有三个按钮,分别是 watch、star、fork,但是有些刚开始使用 github 的同学,可能对这三个按钮的使用却不怎么了解,包括一开始使用 github 的我也是如此,这篇博客,结合自己的理解…

docker 操作 记录

docker ps #查看当前docker容器 docker exec -it 容器名称 sh 进入docker容器 docker stop 停止docker容器转载于:https://www.cnblogs.com/objects/p/9569299.html

关于群论证明费马小定理?

这篇博客就是讲证费马的,没什么意思。 既然是要用群论证明费马小定理,那么我们先用数论证明一下。 (以下的 p 为一个质数) 首先我们考虑 一个前置定理: 第一个证明 若 $(c,p) 1$ (即 c 与 p 的 gcd 为 1),且 $ac ≡ bc (mod\ p)$ …

spring 源码-context

1 spring-context 模块概要 该模块主要实现在spring-beans 模块的扩展,主要对aop支持及el表达式的实现 分析示例 public static void main(String[] args){ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext("spring-aop.xml"…