phthon 基础 7.3 logging 日志模块

一. logging 的使用

日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改。python有给我们开发者提供好的日志模块,下面我们就来介绍一下logging模块:

import logging

#从上往下,日志级别逐渐升高

logging.debug(‘this is debug message‘)

logging.info(‘this is info message‘)

logging.warning(‘this is warning message‘)

logging.error(‘this is error message‘)

logging.critical(‘this is critical message‘)

>>>

WARNING:root:this is warning message

ERROR:root:this is error message

CRITICAL:root:this is critical message

debug:详细的信息,通常只出现在诊断问题上。

info:确认一切按预期运行

warning:一个警告,可能会有一些意想不到的事情发生了,或表明一些问题在不久的将来(例如,磁盘空间低)。这个软件还能按预期工作。

error:一个更严重的问题,软件没能执行一些功能

critical:一个严重的错误,这表明程序本身可能无法继续运行

默认logging的日志级别为info,一般基本上所有程序都是这个级别,有助于我们排查问题,但是当发生问题,我们没法定位问题,很多情况下我们需要把日志级别提升到debug级别,那又怎么办呢?

二. 通过logging.basicConfig 函数对日志的输出格式及方式做相关配置。现实工作中,往往我们是要把日志写在日志文件中的,那怎么样做呢?看如下代码:

#通过logging.basicConfig 函数 把日志写在文件中

logging.basicConfig(level=logging.DEBUG,format=‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘

,datefmt=‘ %Y/%m/%d %H:%M:%S‘, filename=‘lzc.log‘, filemode=‘w+‘)

logging.debug(‘this is debug message‘)

logging.info(‘this is info message‘)

logging.warning(‘this is warning message‘)

logging.error(‘this is error message‘)

logging.critical(‘this is critical message‘)

打开生成的日志文件 lzc.log

2017/11/10 04:34:10 logging ???.py[line:23] DEBUG this is debug message

2017/11/10 04:34:10 logging ???.py[line:24] INFO this is info message

2017/11/10 04:34:10 logging ???.py[line:25] WARNING this is warning message

2017/11/10 04:34:10 logging ???.py[line:26] ERROR this is error message

2017/11/10 04:34:10 logging ???.py[line:27] CRITICAL this is critical message

三。主要是通过logging.basicConfig 函数进行操作,现在我们来介绍该函数参数的用法:

level :设置日志级别,默认为logging.WARNING

filename:指定日志文件名

filemode:和file函数意义相同,指定日志文件的打开模式,‘w‘或‘a‘

format:指定输出的格式和内容,format可以输出很多有用信息,如上例所示:

%(levelname)s:打印日志级别名称

%(filename)s:打印当前执行程序名

%(funcName)s:打印日志的当前函数

%(lineno)d:打印日志的当前行号

%(asctime)s:打印日志的时间

%(thread)d:打印线程ID

%(message)s:打印日志信息

datefmt:指定时间格式,同time.strftime()

stream:指定将日志的输出流,可以指定输出到 sys.stderr,sys.stdout 或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

logging.getLogger([name]):创建一个日志对象:

返回一个logger实例,如果没有指定name,返回root logger。只要name相同,返回的logger 实例都是同一个而且只有一个,即name和logger 实例是一一对应的。这意味着,无需把logger实例在各个模块中传递。只要知道name,就能得到同一个logger实例。

logging.getLogger(__name__) 在上述实例中__name__就指的是__main__.

时间: 2024-10-06 00:10:53

phthon 基础 7.3 logging 日志模块的相关文章

python 自动化之路 logging日志模块

logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方http://blog.csdn.net/zyz511919766/article/details/25136485 清晰明了,入门必备http://my.oschina.net/leejun2005/blog/126713 继承讲的很棒http://my.oschina.net/u/126495/blog/464892 实例分析 一:概述 在实际项目

Python入门之logging日志模块以及多进程日志

本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python的logging模块提供了灵活的标准模块,使得任何Python程序都可以使用这个第三方模块来实现日志记录.python logging 官方文档 logging框架中主要由四个部分组成: Loggers: 可供程序直接调用的接口 Handlers: 决定将日志记录分配至正确的目的地 Filters:

python 全栈 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)

一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据流中接收) 1.函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error mes

python的logging日志模块(二)

晚上比较懒,直接搬砖了. 1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message') 屏幕上打印:WARNING:root:This is warning message 默认情况下,logging将日志打印到屏幕,日志级别为WARNING: 日志级别大小关系为:

python的logging日志模块(一)

最近修改了项目里的logging相关功能,用到了Python标准库里的logging模块,在此做一些记录.主要是从官方文档和stackoverflow上查询到的一些内容. 官方文档 技术博客 基本用法 下面的代码展示了logging最基本的用法. # -*- coding: utf-8 -*- import logging import sys # 获取logger实例,如果参数为空则返回root logger logger = logging.getLogger("AppName")

logging日志模块

一.logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息: print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据:logging则可以由开发者决定将信息输出到什么地方,以及怎么输出 二.logging模块使用 2.1 基本使用 配置logging的基本配置

python-25 logging日志模块之二

1. logging日志框架 主要包括四部分: Loggers: 可供程序直接调用的接口,app通过调用提供的api来记录日志 Handlers: 决定将日志记录分配至正确的目的地 Filters:对日志信息进行过滤, 提供更细粒度的日志是否输出的判断 Formatters: 制定最终记录打印的格式布局 1)loggers loggers 就是程序可以直接调用的一个日志接口,可以直接向logger写入日志信息.logger并不是直接实例化使用的,而是通过logging.getLogger(nam

Python之logging日志模块

logging 用于便捷既然日志切线程安全的模块 vim log_test.py import logging logging.basicConfig(filename='log.log', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=logging.DEBUG) logging.debug('debug') logg

day17 logging 日志模块

一.基本用法 logging模块的四个对象: logger :产生日志对象 Filter :过滤日志对象(不常用) Handler :接收日志,控制打印到不同的路径(Filehandler打印到文件中,StreamHandler打印到控制台) Formatter :定制不同的日志格式对象,绑定给不同的Handler对象使用 1 import logging 2 import sys 3 4 #获取logger实例,参数为空时返回root logger 5 logger=logging.getLo