首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python的logging模块

logging日志模块

日志记录的默认等级为WARNING (也可以自定义)

CRITICAL > ERROR > WARNING > INFO > DEBUG

一个简单的日志实例(打印到控制台)

import logging

logging.debug('This is debug message')

logging.info('This is info message')

通过调用logging的方法传入参数就可以把信息在控制台输出

在生产环境中需要根据实际情况,简单的日志记录不能满足情况,可以通过调用logging.basicConfig()来配置对日志的输出格式及方式做相关配置

#输出到文件

import logging

logging.basicConfig(level=logging.DEBUG,

format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',

datefmt='%a, %d %b %Y %H:%M:%S',

filename='myapp.log',

filemode='w')

#以下为要输出的日志信息

logging.debug('This is debug message')

logging.info('This is info message')

logging.warning('This is warning message')

#在这里的filename和filemode必须同时有表示,以何种方式,把日志写到那个文件中,这时就不会将信息在控制台打印。

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被忽略

#输出到文件和控制台

第一种

import logging

logger = logging.getLogger()

logger.setLevel(logging.DEBUG) #设置级别

# 创建一个handler,用于写入日志文件

fh = logging.FileHandler('test.log')

# 再创建一个handler,用于输出到控制台

ch = logging.StreamHandler()

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

fh.setFormatter(formatter)#给控制台和文件日志以相同的格式打印

ch.setFormatter(formatter)

logger.addHandler(fh) #logger对象可以添加多个fh和ch对象

logger.addHandler(ch)

在这种方式中,两个控制台和日志的文件记录级别相同;格式可以不同。下一种记录级别可以不同

第二种

import logging

logging.basicConfig(level=logging.DEBUG,

format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',

datefmt='%a, %d %b %Y %H:%M:%S',

filename='myapp.log',

filemode='w')

#上面是设置文件日志,下面添加了一个控制台打印对象,并设置日志级别和输出格式,并添加到logging对象中

console = logging.StreamHandler()

console.setLevel(logging.INFO)

formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')

console.setFormatter(formatter)

logging.getLogger('').addHandler(console)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180121A0IT9G00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券