python的logging模块

五个级别的日志debug、info、warning、error、critical,默认级别为warning

通过logging.basicConfig设置日志的显示参数,再通过logging.debug等方法输出日志,这种方法要么只能输出日志到屏幕,要么只能输出日志到一个文件中,无法同时输出到屏幕和文件。

import logging
logging.basicConfig(
    level=logging.WARNING, #设置级别为WARN级别,默认就为WARNING级别
    filename='log.log',  #设置日志输出到脚本所在路径下的log.log文件,默认输出到当前屏幕
    filemode='w',  #默认为写模式,默认为追加模式
    format='%(asctime)s  %(filename)s[%(lineno)d]  %(message)s'
)
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

#输出文件如下
#2018-11-21 10:22:14,183  log.py[10]  warning message
#2018-11-21 10:22:14,183  log.py[11]  error message
#2018-11-21 10:22:14,184  log.py[12]  critical message

以上,在logging.basicConfig的format中可设置日志显示的各种参数

%(asctime)s:以字符串形式显示当前时间,默认格式为2018-11-20 21:06:04,862

%(name)s:登录用户

%(pathname)s:调用日志输出函数的模块的完整路径

%(filename)s:调用日志输出函数的模块的文件名

%(module)s:调用日志输出函数的模块名

%(funcName)s:调用日志输出函数的函数名

%(lineno)d:调用日志输出函数的语句所在代码行

%(process)d:进程id

%(thread)d:线程id

%(threadName)s:线程名

%(levelno)s:数字形式的日志级别

%(levelname)s:文本形式的日志级别

%(created)f:当前时间,用unix标准的表示时间的浮点数表示

%(relativeCreated)d:输出日志信息时的、自logger创建以来的毫秒数

 

 通过logging.getLogger()方法生成对象并设置各种参数,再调用对象的debug等方法显示日志

def logger():  #定义文件
    logger=logging.getLogger()  #创建一个logger对象,默认为根用户
    fh=logging.FileHandler('test_log')  #创建向文件输出日志的对象,参数为目标文件的名称
    sh=logging.StreamHandler()  #创建向屏幕输出日志的对象
    fm=logging.Formatter('%(asctime)s  %(name)s  %(message)s')  #创建格式对象
    fh.setFormatter(fm)  #设置向文件输出日志的对象的格式
    sh.setFormatter(fm)  #设置向屏幕输出日志的对象的格式
    logger.addHandler(fh)  #logger对象增加向文件输出日志的功能
    logger.addHandler(sh)  #logger对象增加向屏幕输出日志的功能
    logger.setLevel('DEBUG')  #设置logger对象的日志显示级别
    return logger

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

logger=logging.getLogger()默认创建的是根用户的对象,如果加参数例如‘test’,表示创建的是根用户下的test用户,如果再要创建test下的子用户,需加通过.加参数例如'test.son',且如果参数相同,则创建的多个对象都是同一个对象,对其设置的格式、日志等级等,都以最后一个为准。

如果创建根用户对象和根用户的子对象,或者一个对象和它的子对象,则子对象的日志会输出两遍,即子对象有几层父对象,它的日志就会输出即便。

logger=logging.getLogger('phh')
logger1 = logging.getLogger('phh.girl')
fh=logging.FileHandler('test_log')
sh=logging.StreamHandler()
fm=logging.Formatter('%(asctime)s  %(name)s  %(message)s')
fh.setFormatter(fm)
sh.setFormatter(fm)
logger.addHandler(fh)
logger.addHandler(sh)
logger1.addHandler(sh)
logger.setLevel('WARNING')
logger1.setLevel('ERROR')

logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
logger1.debug('1 debug message')
logger1.info('1 info message')
logger1.warning('1 warning message')
logger1.error('1 error message')
logger1.critical('1 critical message')
#输出内容如下
# 2018-11-21 21:03:51,999  phh  warning message
# 2018-11-21 21:03:51,999  phh  error message
# 2018-11-21 21:03:51,999  phh  critical message
# 2018-11-21 21:03:52,000  phh.girl  1 error message
# 2018-11-21 21:03:52,000  phh.girl  1 error message
# 2018-11-21 21:03:52,000  phh.girl  1 critical message
# 2018-11-21 21:03:52,000  phh.girl  1 critical message

 

转载于:https://www.cnblogs.com/Forever77/p/9991075.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值