Python基础语法 - logging

描述:

  很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志。

  logging的日志可以分为5个级别:

  • debug()
  • info()
  • warning()
  • error()
  • critical()

简单用法:

logging.debug('degbug message')
logging.info('info message')
logging.warning('hello')
logging.error('error message')
logging.critical('critical message')

>>>输出:

WARNING:root:hello
ERROR:root:error message
CRITICAL:root:critical message
level = warning

将日志写入文件:

import logging

logging.basicConfig(level = logging.DEBUG,
                    format = '%(asctime)s %(filename)s - %(levelname)s - %(message)s',
                    datefmt= '%a,%d %b %Y %H:%M:%S',
                    filename = 'test.log',
                    filemode = 'a')

logging.debug('degbug message')
logging.info('info message')
logging.warning('hello')
logging.error('error message')
logging.critical('critical message')

>>>输出:
test.log
Wed,21 Mar 2018 22:58:03 logging_module.py - DEBUG - degbug message
Wed,21 Mar 2018 22:58:03 logging_module.py - INFO - info message
Wed,21 Mar 2018 22:58:03 logging_module.py - WARNING - hello
Wed,21 Mar 2018 22:58:03 logging_module.py - ERROR - error message
Wed,21 Mar 2018 22:58:03 logging_module.py - CRITICAL - critical message
  • level = logging.DEBUG 设置日志级别

logging.basicConfig函数各参数:

filename:指定日志文件名;

filemode:指定日志文件的打开模式,'w'或者'a';

format:指定输出的格式和内容;

datefmt:指定日期时间格式;

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

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

 

format参数中可能用到的格式化串:

%(name)s Logger的名字
%(levelno)s:数字形式的日志级别
%(levelname)s:文本形式的日志级别
%(pathname)s:调用日志输出函数的模块的完整路径名,可能没有
%(filename)s:调用日志输出函数的模块的文件名
%(module)s:调用日志输出函数的模块名
%(funcName)s:调用日志输出函数的函数名
%(lineno)d:打印日志的当前行号
%(asctime)s:打印日志的时间
%(thread)d:打印线程ID
%(threadName)s:打印线程名称
%(process)d:打印进程ID
%(message)s:用户输出的消息

 

logger

  还有一个模块级别的函数是logging.getLogger([name])(返回一个logger对象,如果没有指定名字将返回root logger)

  Logger.setLevel(logging.DEBUG)指定最低的日志级别,低于lel的级别将被忽略。

简单的过程:

logger = logging.getLogger()

fh = logging.FileHandler('test.log') # 创建一个handler,用于写入日志文件
ch = logging.StreamHandler() # 再创建一个handler,用于输出到控制台

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

fh.setFormatter(formatter)
ch.setFormatter(formatter)

logger.addHandler(fh)
logger.addHandler(ch)

logger.debug('logger debug message')
logging.info('logger info message')
logging.warning('logger warning message')
logging.error('logger error message')
logging.critical('logger critical message')

>>>屏幕文件同时输出:

2018-03-22 00:02:00,476 - root - WARNING - logger warning message
2018-03-22 00:02:00,476 - root - ERROR - logger error message
2018-03-22 00:02:00,476 - root - CRITICAL - logger critical message
View Code

 

转载于:https://www.cnblogs.com/id19910408/p/8620291.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值