Python之配置日志模块logging

一、定义日志打印方式

如果我们运行自己的程序,有时候需要记录程序运行过程中出现的问题或者信息。可以运用日志模块logging来记录,该模块日志格式可以根据用户需求来自己定义。

常见打印日志信息形式如下:

import logging
logging.debug("========定义要打印的内容====debug①===========")
logging.info("=========定义要打印的内容====info②===========")
logging.warning("======定义要打印的内容====warning③===========")

默认情况下,logging将日志打印到屏幕,日志级别为WARNING;

日志级别优先关系为:CRITICAL>ERROR>WARNING>INFO>DEBUG>NOTSET,

对于日志等级:

CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0

当然也可以根据自己的需求定义优先级别,从以上日志优先级别屏幕上打印的内容为:

WARNING:root;======定义要打印的内容====warning③===========

二、通过logging.basicConfig函数对日志的输出格式进行配置

#!/usr/bin/env python
# -*- coding:utf8 -*-
import logging
def logs(arg):
         logging.basicConfig(level=logging.DEBUG,
                            format=‘%(asctime)s %(message)s‘,
                            datefmt=‘%Y-%m-%d %H:%M:%S‘,
                            filename=‘myapp.log‘,
                            filemode=‘w‘)
         logging.debug(arg)
         logging.info(arg)
         logging.warning(arg)
logs(‘python is language‘)
[[email protected] log]# python log.py
[[email protected] log]# cat myapp.log 
2016-01-27 10:44:57 python is language
2016-01-27 10:44:57 python is language
2016-01-27 10:44:57 python is language

logging.basicConfig函数各参数:

filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,‘w‘或‘a‘
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
 %(levelno)s: 打印日志级别的数值
 %(levelname)s: 打印日志级别名称
 %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
 %(filename)s: 打印当前执行程序名
 %(funcName)s: 打印日志的当前函数
 %(lineno)d: 打印日志的当前行号
 %(asctime)s: 打印日志的时间
 %(thread)d: 打印线程ID
 %(threadName)s: 打印线程名称
 %(process)d: 打印进程ID
 %(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

三、运行logging模块记录程序操作

有如下日志定义文件(log.py):

[[email protected] log]# cat log.py
#!/usr/bin/env python
# -*- coding:utf8 -*-
import logging
def logs(arg):
         logging.basicConfig(level=logging.DEBUG,
                            format=‘%(asctime)s %(message)s‘,
                            datefmt=‘%Y-%m-%d %H:%M:%S‘,
                            filename=‘shopping.log‘,
                            filemode=‘a‘)
         logging.info(arg)
[[email protected] log]#

应用程序内容如下:

[[email protected] log]# cat shopping.py 
#!/usr/bin/env python
# -*- coding:utf8 -*-
from log import logs
user_dict={‘apple‘:4.5,‘pear‘:3.3,‘banana‘:2.5,‘tomato‘:1.5}
ch_fruit = raw_input("请输入要买的水果:")
num=int(raw_input("请输入要买入水果的重量:"))
total_prices= user_dict[ch_fruit]*num
print "您买的 %s 需要支付 %d 元" % (ch_fruit,total_prices)
record="购买%d千克%s"%(num,ch_fruit)#定义购买记录信息
logs(record)#调用log.py中定义的函数logs

运行shopping.py

[[email protected] log]# python shopping.py
请输入要买的水果:banana
请输入要买入水果的重量:3
您买的 banana 需要支付 7 元
[[email protected] log]# python shopping.py
请输入要买的水果:pear
请输入要买入水果的重量:10
您买的 pear 需要支付 33 元
[[email protected] log]# python shopping.py
请输入要买的水果:apple
请输入要买入水果的重量:8
您买的 apple 需要支付 36 元

查看生成日志记录信息:

[[email protected] log]# cat shopping.log 
2016-01-27 11:10:47 购买3千克banana
2016-01-27 11:10:53 购买10千克pear
2016-01-27 11:11:02 购买8千克apple
[[email protected] log]#

思路:在生产中可以把日志记录模块写到一个文件中,然后在生产的程序中直接导入即可,最后根据需求定义要写入的记录内容

时间: 2024-10-15 12:57:36

Python之配置日志模块logging的相关文章

python中的日志模块logging

1.日志级别5个: 警告Warning 一般信息Info  调试 Debug  错误Error 致命Critical 2.禁用日志方法 logging.disable(logging.DEBUG) 3.将日志写入文件 logging.basicConfig(filename='log.txt', level=logging.CRITICAL, format=' %(asctime)s - %(levelname)s - %(message)s') 4.格式化输出日志信息 注意事项: 1.日志输出

python 重要的日志模块logging

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

python日志模块-logging

日志模块 logging logging模块主要可以根据自定义日志信息,在程序运行的时候将日志打印在终端及记录日志到文件中.在这先了解一下logging支持的日志五个级别 debug() 调试级别,一般用于记录程序运行的详细信息 info() 事件级别,一般用于记录程序的运行过程 warnning() 警告级别,,一般用于记录程序出现潜在错误的情形 error() 错误级别,一般用于记录程序出现错误,但不影响整体运行 critical 严重错误级别 , 出现该错误已经影响到整体运行 简单用法,将

【转】python之配置日志的几种方式

[转]python之配置日志的几种方式 作为开发者,我们可以通过以下3种方式来配置logging: 1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数: 2)创建一个日志配置文件,然后使用fileConfig()函数来读取该文件的内容: 3)创建一个包含配置信息的dict,然后把它传递个dictConfig()函数: 需要说明的是,logging.basicConfig()也属于第一种方式,它只是对loggers, handlers

python之写日志模块

python自带的日志模块logging比较难用,这里介绍一个好用的日志模块nnlog,直接pip install nnlog即可 import nnlog log = nnlog.Logger(file_name='my.log',level='debug',when='D',backCount=5,interval=1) #file_name是日志文件名,可以是不存在的文件,会主动帮助创建 #level是日志级别,如果不传的话默认是debug级别 #when是日志文件多久生成一个,默认是按天

Python(2.7.6) 标准日志模块 - Logging Configuration

除了使用 logging 模块中的 basicConfig 方法配置日志, Python 的 logging.config 模块中, dictConfig 和 fileConfig 方法分别支持通过字典和文件的方式配置 Logger.Handler 和 Formatter.下面用一个例子来简单地说明如何使用文件配置日志,更多详细的用法参考:https://docs.python.org/2/library/logging.config.html logging.conf ############

python的日志模块logging和syslog

syslog模块是在unix环境下工作的模块,不能用于windows,在windows环境下可以使用logging模块. 一.syslog syslog模块可以用于记录系统运行的信息,这个模块提供的方法有,syslog(priority,message),它将message送入系统日志,priority的默认选项为LOG_INFO,openlog([ident[,logoption[,facility]]]),它用于打开日志,ident会被加到每条日志,logoption是日志选项,facili

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:日志级别大小关系为:CRITICAL > ERROR >

Python(2.7.6) 标准日志模块 - Logging Handler

Python 标准日志模块使用 Handler 控制日志消息写到不同的目的地,如文件.流.邮件.socket 等.除了StreamHandler. FileHandler 和 NullHandler 定义在 logging 模块中,其他的 Handler 均定义在  logging.hangdlers 模块中.这些 Handler 是:WatchedFileHandler.RotatingFileHandler.TimedRotatingFileHandler.SocketHandler.Dat