python logging函数的使用

import logging
import logging.handlers  # 日志滚动及删除使用

# 1.设置log日志记录格式及记录级别
# level记录级别包括DEBUG/INFO/WARNING/ERROR/CRITICAL,级别依次上升,log只会输出保存设置的级别及以上的日志。如果设置level=logging.DEBUG,则所有级别日志都会输出保存、如果level=logging.CRITICAL,则只输出保存CRITICAL级别日志
# format输出格式levelname级别名、asctime 时间、filename所在文件名、message记录内容
# datefmt 时间格式
# filename 要保存的文件名
# a写入模式,a则每次启动脚本时在原有文件中继续添加;w则每次启动脚本会重置文件然后记录
# 配置logging        # 指定日志名字
# logging.basicConfig(filename='my_project.log',
#                     # 指定日志等级
#                     level=logging.INFO,
#                     # 指定编码
#                     encoding='utf-8',
#                     # 日志时间               日志所属函数     日志信息
#                     format='%(levelname)s:%(asctime)s %(module)s %(funcName)s %(message)s',
#                     # 指定时间格式
#                     datefmt='%Y/%m/%d %I:%M:%S %p')

# 2.设置log日志的标准输出打印,可以在运行里看到你你之前用 print 出来的东西
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(levelname)s: %(asctime)s %(module)s %(funcName)s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)

# 3.设置log日志文件按时间拆分记录,并保存几个历史文件,如果不需要拆分文件记录可忽略
# class logging.handlers.WatchedFileHandler(filename, mode='a', encoding=None, delay=False)
# 例:设置每天保存一个log文件,以日期为后缀,保留7个旧文件。
# myapp = logging.getLogger()
# myapp.setLevel(logging.INFO)
# formatter = logging.Formatter('%(levelname)s: %(asctime)s %(module)s %(funcName)s %(message)s')
# filehandler = logging.handlers.TimedRotatingFileHandler("my_project.log",
#                                                         when = 'd',
#                                                         interval = 1,
#                                                         backupCount = 7,
#                                                         encoding = 'utf-8')  # 每 1(interval) 天(when) 重写1个文件,保留7(backupCount) 个旧文件;when还可以是Y/m/H/M/S
# filehandler.suffix = "%Y-%m-%d_%H-%M-%S.log"  # 设置历史文件 后缀
# filehandler.setFormatter(formatter)
# myapp.addHandler(filehandler)

# 4.设置log日志文件按文件大小拆分记录,并保存几个历史文件,如果不需要拆分文件记录可忽略
# class logging.handlers.RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0)
myapp = logging.getLogger()
myapp.setLevel(logging.INFO)
formatter = logging.Formatter('%(levelname)s:%(asctime)s %(module)s %(funcName)s %(message)s')
filehandler = logging.handlers.RotatingFileHandler("my_project.log",
                                                   mode='a',
                                                   maxBytes=13107200,
                                                   backupCount=2,
                                                   encoding='utf-8',
                                                   )  
# 每 1024Bytes重写一个文件,保留2(backupCount) 个旧文件
filehandler.setFormatter(formatter)
myapp.addHandler(filehandler)

"""
输出format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s用户输出的消息

注:1、3和4只设置一个就可以。

"""
# 设置打印日志的级别,level级别以上的日志会打印出
# level=logging.DEBUG 、INFO 、WARNING、ERROR、CRITICAL
# def log_testing():
#     # 此处进行Logging.basicConfig() 设置,后面设置无效
#     logging.basicConfig(level=logging.ERROR)
#     logging.debug('debug,用来打印一些调试信息,级别最低')
#     logging.info('info,用来打印一些正常的操作信息')
#     logging.warning('waring,用来用来打印警告信息')
#     logging.error('error,一般用来打印一些错误信息')
#     logging.critical('critical,用来打印一些致命的错误信息,等级最高')

"""
logging.basicConfig()的参数除了日志等级的这个参数可以设置以外,还可以设置其他的参数,比如
参数名称    参数作用说明
filename  制定保存日志的文件名
filemode  如果指明了文件名,指明打开文件的模式(如果没有指明 filemode,默认为‘a’)
format    指定输出的格式和内容
datefmt   指定时间格式,同time.strftime()
level     指定根日志记录器级别,默认为logging.WARNING
stream    指定日志的输出流,可以指定输出到sys.stderr, sys.sys.stdout或储文件,默认输出到sys.stderr,当stream和filename同时指定时,
          stream被忽略
上表提到日志的输出格式参数format,其控制着日志输出的一些格式:

"""



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Need knowledge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值