千锋教育-做有情怀、有良心、有品质的IT职业教育机构

400-811-9990
当前位置:千锋视频教程 > linux视频教程  >  Python模块学习之日志记录logging

Python模块学习之日志记录logging

时间:2017-12-20 14:27:38     来源:千锋视频教程 作者:教学部

  在python中,logging由logger,handler,filter,formater四个部分组成,logger是提供我们记录日志的方法;handler是让我们选择日志的输出地 方,如:控制台,文件,邮件发送等,一个logger添加多个handler;filter是给 用户提供更更加细粒度的控制 日志的输出内容;formater 用户格式化输出日志的信息。

  1.python中配置logging有两种 方式:

  第 一种:基础配置

  logging.basicConfig(filename="config.log",filemode="w",format="%(asctime)s-%(name)s-%(levelname)s-%(message)s",level=logging.INFO)

  •   basicConfig 用来在代码中配置日志
  •   filename指定 日志被保存到某个具体的文件
  •   filename设置 文件有写的权限
  •   format设置记录的属性, 比如时间、等级、信息等
  •   level指定记录 日志的等级(level以上)

  第 二种:使 用配置文件的方式配置logging,使 用下面的函数来读取配置文件

  fileConfig(filename,defaults=None,disable_existing_loggers=Ture )

  2.在logging.basicConfig()函数中可通过具体参数来更更改logging模块默认行为,可用参数有:

  •   filename: 用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样 日志会被存储在指定的文件中
  •   filemode: 文件打开方式,在指定了filename时使 用这个参数,默认值为“a”还可指定为“w”
  •   format: 指定handler使 用的 日志显示格式
  •   datefmt: 指定 日期时间格式
  •   level: 设置rootlogger(后边会讲解具体概念)的日志级别
  •   stream: 用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr若同时列列出了filename和stream两个参数,则stream参数会被忽略。

  3.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 用户输出的消息

  4. 日志级别等级 CRITICAL > ERROR > WARNING > INFO > DEBUG

  linux视频教程

  程序代码 logging_fileconfig.py 如下(只做部分解析):

  # ^@^ coding:utf-8 ^@^

  import logging import logging.config

  logging.config.fileConfig('logging.cnf')

  logging.debug('debug message')

  logging.info('info message')

  logging.warn('warn message')

  logging.error('error message')

  logging.critical('critical message')

  配置 文件内容如下:

  [root@localhost ~]# cat ./logging.cnf

  [loggers] keys = root

  [handlers] keys = logfile

  [formatters] keys = generic

  [logger_root] handlers = logfile

  [handler_logfile]

  class = handlers.TimedRotatingFileHandler args = ('app.log', 'midnight', 1, 10)

  level = DEBUG formatter = generic

  [formatter_generic]

  format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s] %(message)s

  执 行行程序查看结果:

  [root@localhost ~]# python logging_fileconfig.py

  [root@localhost ~]# cat ./app.log

  2017-12-20 14:10:31,439 WARNI [root:11] warn message 2017-12-20 14:10:31,439 ERROR [root:12] error message 2017-12-20 14:10:31,439 CRITI [root:13] critical message

  千锋linux视频教程每天分享技术知识,更多免费视频教程关注千锋!

  • 北京天丰利校区(总部):北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术学院广场服务楼2层、南区服务楼2层
    咨询电话:400-186-9990 010-82790226-801
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、大数据开发培训、VR/AR混合
    现实培训、Python培训、Linux云计算培训、软件测试培训、Android培训、iOS培训、好程序员
  • 深圳西部硅谷校区地址:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619
    深圳大学城校区地址:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    咨询电话:0755-33582485-801(硅谷校区)0755-86660670-801(大学城校区)
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android培训、iOS培训
  • 上海校区地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-56166283/56166279
    面授课程:全栈HTML5+培训、UI交互设计培训、JavaEE+云数据培训、Android课程培训、iOS课程培训、好程序员
  • 郑州校区地址:郑州市金水区纬五路21号河南教育学院综合楼(经纬中学楼)7/8层
    咨询电话:0371-55191750 400-186-9990
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 广州校区地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-186-9990
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 大连校区地址:辽宁省大连市甘井子区软件园路2号东软信息学院B5座一楼
    咨询电话:0411-39026086 400-186-9990
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、UI交互设计培训、Android课程培训、iOS课程培训
  • 武汉校区地址:武汉市光谷大道61号智慧园21号楼2层
    咨询电话:027-65523826
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 成都校区地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    咨询电话:028-83178771
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
    咨询电话:029-85260160
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训
  • 杭州校区地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226-801
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术学院南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226-801
    面授课程:全栈HTML5+培训、UI交互设计培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 重庆校区地址:重庆市高新区科园一路2号大西洋国际12-1
    咨询电话:023-68883009
    面授课程:JavaEE+云数据课程培训
  • 长沙校区地址:湖南省长沙市岳麓区麓谷企业广场A2栋三单元306号
    咨询电话:0731-85513010/85513210
    面授课程:JavaEE+云数据课程培训
  • 哈尔滨校区地址:哈尔滨市松北区创新一路699号科技创新城19号楼五楼
    咨询电话:15663846969
    面授课程:全栈HTML5+培训
  • 千锋教育服务号

    了解千锋动态
    关注千锋教育服务号

  • 千锋互联服务号

    扫码匿名提建议
    直达CEO信箱