Python模块:logging

很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug、info、warning、error、critical 5个级别,下面我们看一下怎么用

模块初识:

#logging初识 import logging logging.warning("user [James] attempted wrong password more than 3 times")logging.critical("server is down") # WARNING:root:user [James] attempted wrong password more than 3 times# CRITICAL:root:server is down

登录后复制

上面的代码是最简单的方式,括号里的内容为打印的信息,logging.后的方法为日志的级别,下面看看logging五个级别的详细信息

QQ图片20161101114531.png

如果想把日志写到文件里,也很简单:

立即学习“Python免费学习笔记(深入)”;

#日志打印到文件中 import  logging logging.basicConfig(filename="example.log",level=logging.INFO,                    format="%(asctime)s %(message)s", datefmt="%m/%d/%Y %H:%M:%S [%A]")                                                                # H 24小时格式  I 12小时格式  A 周几完整  a 周几简写  p AM/PM  logging.debug("This message should go to the log file")logging.info("So should this")logging.warning("And this ,too")

登录后复制

logging.basicConfig里定义了输入文件路径,输入日志信息的级别,输入的格式,格式可自定义;执行完代码后example.log文件会生成信息如下:

10/31/2016 17:16:17 [Monday] So should this10/31/2016 17:16:17 [Monday] And this ,too

登录后复制

其中下面这句中的level=loggin.INFO意思是,把日志纪录级别设置为INFO,也就是说,只有比日志是INFO或比INFO级别更高的日志才会被纪录到文件里,在这个例子, 第一条日志是不会被纪录的,如果希望纪录debug的日志,那把日志级别改成DEBUG就行了

 

如果想同时把log打印在屏幕和文件日志里,就需要了解一点复杂的知识了:

The logging library takes a modular approach and offers several categories of components: loggers, handlers, filters, and formatters.

Loggers expose the interface that application code directly uses.

Handlers send the log records (created by loggers) to the appropriate destination.

Filters provide a finer grained facility for determining which log records to output.

Formatters specify the layout of log records in the final output.

#!/usr/bin/env python# -*- coding:utf-8 -*-#-Author-Lian import  logging #创建loggerlogger = logging.getLogger("test_log")  #创建logger对象   括号内容随便写logger.setLevel(logging.INFO)       #全局日志级别  ch = logging.StreamHandler()        #日志打印到屏幕上ch.setLevel(logging.DEBUG)          #指定ch日志打印级别 fh = logging.FileHandler("access.log")      #日志存进文件fh.setLevel(logging.WARNING)            #指定fh日志输入级别 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")   #定义日志格式,可写多个 #添加日志格式到ch,fhch.setFormatter(formatter)fh.setFormatter(formatter) #添加ch,fh到logger中logger.addHandler(ch)logger.addHandler(fh)  logger.debug('debug message')logger.info('info message')logger.warn('warn message')logger.error('error message')logger.critical('critical message')

登录后复制

全局日志级别为整个程序的底线,局部日志级别要想打印则不能比这个级别再低了

屏幕打印信息

2016-10-31 17:23:42,988 - test_log - INFO - info message2016-10-31 17:23:42,988 - test_log - WARNING - warn message2016-10-31 17:23:42,988 - test_log - ERROR - error message2016-10-31 17:23:42,988 - test_log - CRITICAL - critical message

登录后复制

access.log:

2016-10-31 17:02:06,223 - test_log - WARNING - warn message2016-10-31 17:02:06,224 - test_log - ERROR - error message2016-10-31 17:02:06,224 - test_log - CRITICAL - critical message

登录后复制

日志所有的格式:

QQ图片20161101114531.png

重要的几个格式:%(lineno)d 输出打印日志代码行 ,%(process)d输出打印日志的进程ID ,%(thread)d输出打印日志的线程ID

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2283361.html

(0)
上一篇 2025年2月27日 20:06:20
下一篇 2025年2月25日 10:11:18

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python网络编程

    认识Socket socket通常也称作”套接字”,用于描述ip地址和端口,是一个通信链的句柄,应用程序通常通过”套接字”向网络发出请求或者应答网络请求。 socket起源于Unix,而Uni…

    2025年2月27日
    200
  • ROS多个master消息互通

    需求 有时候我们需要有几个不同的master, 他们之间要交换topic的内容,这时候就不能使用ros自带的设置同一个master的方法. 我们的处理方法是,构造一个client和一个server,他们运行在不同的master下面, cli…

    编程技术 2025年2月27日
    200
  • Windows版的各种Python库安装包下载地址与安装过程

    在用python开发时(windows环境),会碰到需要安装某个版本的第三方库,为了以后查找、安装方便,总结如下:   windows版的各种Python库安装包下载地址:http://www.lfd.uci.edu/~gohlke/pyt…

    2025年2月27日 编程技术
    200
  • Python内置函数id

    英文文档: id(object) Return the “identity” of an object. This is an integer which is guaranteed to be unique and constant fo…

    编程技术 2025年2月27日
    200
  • Python魔术方法-Magic Method

    绍   在python中,所有以“__”双下划线包起来的方法,都统称为“magic method”,例如类的初始化方法 __init__ ,python中所有的魔术方法均在官方文档中有相应描述,但是对于官方的描述比较混乱而且组织比较松散。很…

    2025年2月27日 编程技术
    200
  • Python中获取当前日期的格式

    在python里如何获取当前的日期和时间呢?在python语言里,我们可以通过调用什么模块或者类函数来得到当前的时间或日期呢? 当然你可以使用时间模块(time module),该模块提供了各种和时间相关的函数。但是这个模块里的一些函数在某…

    编程技术 2025年2月27日
    200
  • 利用python2.7抓取豆瓣电影top250

    这个插件可以方便查看包括html在内许多内容 打开豆瓣电影排行榜top250网页,发现每页有25部电影,一共10页,其每一页url具有如下特征: http://movie.douban.com/top250?start=0 http://m…

    2025年2月27日
    200
  • Queue模块及源码分析

        queue模块是提供队列操作的模块,队列是线程间最常用的交换数据的形式。该模块提供了三种队列: Queue.Queue(maxsize):先进先出,maxsize是队列的大小,其值为非正数时为无线循环队列 Queue.LifoQue…

    编程技术 2025年2月27日
    200
  • Python内置函 iter

    英文文档: iter(object[, sentinel]) Return an iterator object. The first argument is interpreted very differently depending o…

    编程技术 2025年2月27日
    200
  • functools.wraps 装饰器

    wraps其实没有实际的大用处, 就是用来解决装饰器导致的原函数名指向的函数 的属性发生变化的问题; 装饰器装饰过函数func, 此时func不是指向真正的func,而是指向装饰器中的装饰过的函数 import sysdebug_log =…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论