关于Pyhton logging

  1. 一、基础配置方式

  2. import logging  
  3. logging.basicConfig(level=logging.DEBUG,  
  4.                     format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',  
  5.                     datefmt='%a, %d %b %Y %H:%M:%S',  
  6.                     filename='/tmp/test.log',  
  7.                     filemode='w')  
  8.   
  9. logging.debug('debug message')  
  10. logging.info('info message')  
  11. logging.warning('warning message')  
  12. logging.error('error message')  

  1. logging.critical('critical message')  
               filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
               filemode:文件打开方式,在指定了filename时使用这个参数,a表示追加,w表示每次打开覆盖
               format:指定handler使用的日志显示格式,参数中可能用到的格式化串:
                           %(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用户输出的消息
               datefmt:指定日期时间格式,同time.strftime()
               level:设置rootlogger(后边会讲解具体概念)的日志级别 ,默认为logging.WARNING
               stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和                              stream两个参数,则stream参数会被忽略。

               二、配置文件的方式

               #logger.conf
               #-------------------------------------------------------------------------

               #define loggers...
               [loggers]
               keys=root,myLog


               [logger_root]
               level=INFO
               handlers=myHandler

                [logger_myLog]
                level=DEBUG
                handlers=myHandler,myHandlerPrint
                qualname=myLog
                propagate=0
                #-------------------------------------------------------------------------

               #define handlers...
               [handlers]
               keys=myHandler,myHandlerPrint

               [handler_myHandler]
               class=StreamHandler
               level=DEBUG
               formatter=myFormatter
               args=(sys.stdout,)  

               [handler_myHandlerPrint]
               class=FileHandler 
               formatter=myFormatterPrint
               level=DEBUG
               args=('python.log', 'w')
               #-------------------------------------------------------------------------

               #define formatters...
               [formatters]
               keys=myFormatter,myFormatterPrint

               [formatter_myFormatter]
               format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
               datefmt=

                [formatter_myFormatterPrint]
                format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
                datefmt=
                 #-------------------------------------------------------------------------、


                test.py


  1. import logging
    import logging.config

    logging.config.fileConfig("myCommon\myLog.conf")

    #creater logger
    logger = logging.getLogger("root")
    #create logger1
    logger1 = logging.getLogger('myLog')

    #application code
    logger.debug("debug message")    
    logger.info("info message")    
    logger.warn("warn message")    
    logger.error("error message")    
    logger.critical("critical message")  

    logger1.debug("debug message 1")    
    logger1.info("info message 1")    
    logger1.warn("warn message 1")    
    logger1.error("error message 1")    
    logger1.critical("critical message 1")  


         三、关于一些重要点
         1、 TimedRotatingFileHandler:

                     TimedRotatingFileHandler(filename [,when [,interval [,backupCount]]])

                     filename 是输出日志文件名的前缀

                     when 是一个字符串的定义如下:
                     “S”: Seconds
                     “M”: Minutes
                     “H”: Hours
                     “D”: Days
                     “W”: Week day (0=Monday)
                     “midnight”: Roll over at midnight

                     interval 是指等待多少个单位when的时间后,Logger会自动重建文件,当然,这个文件的创建
                    取决于filename+suffix,若这个文件跟之前的文件有重名,则会自动覆盖掉以前的文件,所以
                    有些情况suffix要定义的不能因为when而重复。

                    backupCount 是保留日志个数。默认的0是不会自动删除掉日志。若设10,则在文件的创建过程中
                    库会判断是否有超过这个10,若超过,则会从最先创建的开始删除。


                    例如:

class=handlers.TimedRotatingFileHandler

level=DEBUG

formatter=myFormatter

args=('test.log','d',2,10)


2、RotatingFileHandler

                       RotatingFileHandler( filename[, mode[, maxBytes[, backupCount]]])

                      其中filename和mode两个参数和FileHandler一样。
                      maxBytes用于指定日志文件的最大文件大小,如果maxBytes为0,意味着日志文件可以无限大,这时上面描述的重命名过程就不会发生。

                      backupCount用于指定保留的备份文件的个数。比如,如果指定为2,当上面描述的重命名过程发生时,原有的chat.log.2并不会被更                      名,而是被删除。

                   例如:

                         class=handlers.RotatingFileHandler

level=INFO

formatter=myFormatter

args=('test.log','a',10 * 1024,10)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值