<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Python logging模塊使用記錄

      
      

      1.簡單的將日志打印到屏幕


      import
      logging logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message') 屏幕上打印: WARNING:root:This is warning message

      默認情況下,logging將日志打印到屏幕,日志級別為WARNING;

      日志級別大小關系為:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,當然也可以自己定義日志級別。

       

      2.通過logging.basicConfig函數對日志的輸出格式及方式做相關配置

       1 import logging
       2 
       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='myapp.log',
       7                 filemode='w')
       8     
       9 logging.debug('This is debug message')
      10 logging.info('This is info message')
      11 logging.warning('This is warning message')
      12  
      13 ./myapp.log文件中內容為:
      14 Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
      15 Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
      16 Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message

      logging.basicConfig函數各參數:
      filename: 指定日志文件名
      filemode: 和file函數意義相同,指定日志文件的打開模式,'w'或'a'
      format: 指定輸出的格式和內容,format可以輸出很多有用信息,如上例所示:
       %(levelno)s: 打印日志級別的數值
       %(levelname)s: 打印日志級別名稱
       %(pathname)s: 打印當前執行程序的路徑,其實就是sys.argv[0]
       %(filename)s: 打印當前執行程序名
       %(funcName)s: 打印日志的當前函數
       %(lineno)d: 打印日志的當前行號
       %(asctime)s: 打印日志的時間
       %(thread)d: 打印線程ID
       %(threadName)s: 打印線程名稱
       %(process)d: 打印進程ID
       %(message)s: 打印日志信息
      datefmt: 指定時間格式,同time.strftime()
      level: 設置日志級別,默認為logging.WARNING
      stream: 指定將日志的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略

       

      3.將日志同時輸出到文件和屏幕

       1 import logging
       2 
       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='myapp.log',
       7                 filemode='w')
       8 
       9 #################################################################################################
      10 #定義一個StreamHandler,將INFO級別或更高的日志信息打印到標準錯誤,并將其添加到當前的日志處理對象#
      11 console = logging.StreamHandler()
      12 console.setLevel(logging.INFO)
      13 formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
      14 console.setFormatter(formatter)
      15 logging.getLogger('').addHandler(console)
      16 #################################################################################################
      17 
      18 logging.debug('This is debug message')
      19 logging.info('This is info message')
      20 logging.warning('This is warning message')
      21  
      22 屏幕上打印:
      23 root        : INFO     This is info message
      24 root        : WARNING  This is warning message
      25 ./myapp.log文件中內容為:
      26 Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
      27 Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
      28 Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message

      4.logging之日志回滾

       1 import logging
       2 from logging.handlers import RotatingFileHandler
       3 
       4 #################################################################################################
       5 #定義一個RotatingFileHandler,最多備份5個日志文件,每個日志文件最大10M
       6 Rthandler = RotatingFileHandler('myapp.log', maxBytes=10*1024*1024,backupCount=5)
       7 Rthandler.setLevel(logging.INFO)
       8 formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
       9 Rthandler.setFormatter(formatter)
      10 logging.getLogger('').addHandler(Rthandler)
      11 ################################################################################################

      從上例和本例可以看出,logging有一個日志處理的主對象,其它處理方式都是通過addHandler添加進去的。
      logging的幾種handle方式如下:

      logging.StreamHandler: 日志輸出到流,可以是sys.stderr、sys.stdout或者文件
      logging.FileHandler: 日志輸出到文件

      日志回滾方式,實際使用時用RotatingFileHandler和TimedRotatingFileHandler
      logging.handlers.BaseRotatingHandler
      logging.handlers.RotatingFileHandler
      logging.handlers.TimedRotatingFileHandler

      logging.handlers.SocketHandler: 遠程輸出日志到TCP/IP sockets
      logging.handlers.DatagramHandler:  遠程輸出日志到UDP sockets
      logging.handlers.SMTPHandler:  遠程輸出日志到郵件地址
      logging.handlers.SysLogHandler: 日志輸出到syslog
      logging.handlers.NTEventLogHandler: 遠程輸出日志到Windows NT/2000/XP的事件日志
      logging.handlers.MemoryHandler: 日志輸出到內存中的制定buffer
      logging.handlers.HTTPHandler: 通過"GET"或"POST"遠程輸出到HTTP服務器

       

      由于StreamHandler和FileHandler是常用的日志處理方式,所以直接包含在logging模塊中,而其他方式則包含在logging.handlers模塊中,

       

      5.通過logging.config模塊配置日志

      #logger.conf
      ###############################################
      [loggers]
      keys=root,example01,example02
      [logger_root]
      level=DEBUG
      handlers=hand01,hand02
      [logger_example01]
      handlers=hand01,hand02
      qualname=example01
      propagate=0
      [logger_example02]
      handlers=hand01,hand03
      qualname=example02
      propagate=0
      ###############################################
      [handlers]
      keys=hand01,hand02,hand03
      [handler_hand01]
      class=StreamHandler
      level=INFO
      formatter=form02
      args=(sys.stderr,)
      [handler_hand02]
      class=FileHandler
      level=DEBUG
      formatter=form01
      args=('myapp.log', 'a')
      [handler_hand03]
      class=handlers.RotatingFileHandler
      level=INFO
      formatter=form02
      args=('myapp.log', 'a', 10*1024*1024, 5)
      ###############################################
      [formatters]
      keys=form01,form02
      [formatter_form01]
      format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
      datefmt=%a, %d %b %Y %H:%M:%S
      [formatter_form02]
      format=%(name)-12s: %(levelname)-8s %(message)s
      datefmt=
      上例3:
      import logging
      import logging.config
      
      logging.config.fileConfig("logger.conf")
      logger = logging.getLogger("example01")
      
      logger.debug('This is debug message')
      logger.info('This is info message')
      logger.warning('This is warning message')
      上例4:
      import logging
      import logging.config
      
      logging.config.fileConfig("logger.conf")
      logger = logging.getLogger("example02")
      
      logger.debug('This is debug message')
      logger.info('This is info message')
      logger.warning('This is warning message')

       

      posted @ 2015-11-15 11:48  狂師  閱讀(402)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人精品亚洲午夜| 日本人一区二区在线观看| 欧美国产成人精品二区芒果视频 | 日本边添边摸边做边爱喷水| 亚洲a免费| 亚洲av不卡电影在线网址最新| 视频一区视频二区视频三| 在线a级毛片无码免费真人| 国产精久久一区二区三区| 司法| 国内精品久久人妻无码妲| 国产精品露脸视频观看| 邻居少妇张开腿让我爽了一夜| 成年女人永久免费观看视频| 久久精品国产99国产精品严洲| 日本久久一区二区三区高清| 在线观看视频一区二区三区| 亚洲中文字幕第二十三页| 国产欧洲欧洲久美女久久| 91福利视频一区二区| 国产在线拍偷自揄观看视频网站| 中文字幕亚洲制服在线看| 久久99精品久久久大学生| 露脸国产精品自产拍在线观看| 欧美激烈精交gif动态图| 亚洲第一精品一二三区| 精品无码国产污污污免费| 国产精品十八禁在线观看| 国产首页一区二区不卡| 免费AV片在线观看网址| 国产一区二区三区自拍视频| 一出一进一爽一粗一大视频| 国产午夜视频在线观看| 人人做人人妻人人精| 任我爽精品视频在线播放| 国产精品美女久久久久久麻豆| 国产精品久久久久久人妻精品| 亚洲午夜福利精品无码不卡| 特级毛片在线大全免费播放| 国产超碰无码最新上传| 亚洲国产日韩欧美一区二区三区|