python log文件_Python logging基本使用

1、打印到控制台

#-*- coding: UTF-8 -*-

importloggingdeflogFileTest():

logging.debug('This is debug')

logging.warning('This is warning message')

logging.info('This is info')

logFileTest()

运行结果

WARNING:root:This is warning message

PS : 只有 logging.warning() 能打印输出到控制台,因为默认设置的等级是 warning,等级低于warning的都不会打印出来

2、配置默认等级后,打印到控制台

#-*- coding: UTF-8 -*-

importloggingdeflogBasicConfig():

logging.basicConfig(level=logging.DEBUG)

logging.debug('This is debug')

logging.warning('This is warning message')

logging.info('This is info')

logBasicConfig()

运行结果

DEBUG:root:This isdebug

WARNING:root:Thisiswarning message

INFO:root:Thisis info

PS : 日志级别: debug < info < warning < error < critical

3、保存到日志文件中,通过 logging.basicConfig() 设置

#-*- coding: UTF-8 -*-

importloggingdefsaveToLogFile():

logging.basicConfig(

filename= 'saveMessage.log', #保存文件路径

filemode= 'a',#保存方式,有 w 和 a 模式,默认不写为追加 a 模式

format= '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s' #日志格式)

logging.warning('This is warning')

saveToLogFile()

运行结果

2019-08-27 14:00:58,463 - D:\E_DISK\product\eclipse\logFileDemo\src\com\logFileDemo.py[line:24] - WARNING: This is warning

PS : 这是 saveMessage.log 文件中生成的日志信息

如果在 logging.basicConfig() 设置 filename 和 filemode,则只会保存 log 到文件,不会输出到控制台

4、实现info信息记录到文件,error信息记录文件并在屏幕上输出,且实现日志回滚

保存10个文件,每个文件大小为1024*1024

需要注意该函数在一个工程中只能调用一次,否则写入信息会增加,比如调用两次该函数后log.info('aaa')文件中会有两次

因此我写了一个log = LogConfig.log()其他类使用时,用该log就行,有点像单例模式

重复写入问题可以参考https://blog.csdn.net/huilan_same/article/details/51858817

importlogging.handlersimportosclassLogConfig:def __init__(self):pass

#DEBUG,INFO,NOTICE,WARNING,ERROR,CRITICAL,ALERT,EMERGENCY

#如果是一个大工程,建议只调用一次,调用位置为主入口处。

@staticmethoddef log(log_name='logs/log.log', log_flag=True,

max_bytes=1024 * 1024, backup_count=10):

path=os.path.split(log_name)[0]if not os.path.isdir(path) and path != '':

os.makedirs(path) # 目录不存在则创建

log_handler=logging.getLogger(log_name)iflog_flag:#write log above info 为True记录INFO以及以上等级的日志

log_handler.setLevel(logging.INFO)else:#write log above error 为False记录ERROR以及以上等级的日志

log_handler.setLevel(logging.ERROR)

stream_handler=logging.StreamHandler() # 控制台日志句柄,设置则可以打印到控制台#is or not show to cmd console

stream_handler.setLevel(logging.WARN) # 设置打印到控制台日志等级为WARN以及以上

log_handler.addHandler(stream_handler) # 添加控制台句柄

# 设置回滚日志句柄

rollback_handler=logging.handlers.RotatingFileHandler(log_name,

maxBytes=max_bytes,

backupCount=backup_count)

log_format=logging.Formatter('[%(asctime)s][%(levelname)s]%(message)s') # 设置日志格式,时间,等级,信息

rollback_handler.setFormatter(log_format)

rollback_handler.setLevel(logging.INFO) # 设置回滚日志记录INFO以及以上信息

log_handler.addHandler(rollback_handler) # 添加回滚日志句柄returnlog_handler # 返回句柄,以便于使用

log=LogConfig.log() # 类似单例模式,只使用一次,不然会出现日志叠加情况if __name__ == '__main__':

log.info('444')

log.error('555')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值