Python學習系列之logging模塊

實例一:日誌寫進一個文件

代碼:python

import logging

logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s  %(filename)s [line:%(lineno)d] %(levelname)s  %(message)s', #定義日誌格式
datefmt='%Y-%m-%d %H:%M:%S %p', #定義asctime
filename='test.log',            #定義日誌文件
filemode='a')                   #定義寫入模式,'a'是追加的意思



 login():
    while True:
        try:
            name = input('Input user name:')
            password = int(input('Input password:'))   #這裏故意轉成整型,觸發異常
            if name == 'andy' and password == 'nopasswd':
                print('logging succeed!')
        except ValueError as e:
            logging.info(e)      #這裏寫入日誌
            break

if __name__ == '__main__':
    login()  

format解釋:shell

  • asctime:時間,按照datefmt定義的顯示,2018-01-10 14:50:25
  • filename:報錯的python文件名稱
  • line:%(lineno)d:報錯的行數
  • levelname:報錯級別
  • message:報錯的信息

測試:測試

[root@admin_bak shell]# python3.6  test_log.py
Input user name:asdasd
Input password:asdsad  #這是輸入字符串,觸發異常  

查看日誌spa

2018-01-10 11:54:40 AM test_log.py test_log.py[line:21] DEBUG invalid literal for int() with base 10: 'asdsad'  

實例二:實現天天一個日誌文件

代碼:日誌

import time

import logging
import logging.handlers

LOG_FILE = "ping.log"          #設置日誌文件名稱
logger = logging.getLogger()   #實例化logging
logger.setLevel(logging.INFO)  #設置日誌級別


#添加TimedRotatingFileHandler  
#定義一秒換一次log文件的handlers
#保留3箇舊log文件
fh = logging.handlers.TimedRotatingFileHandler(LOG_FILE, when='D', interval=1, backupCount=10)
#定義asctime datefmt = '%Y-%m-%d %H:%M:%S'
#定義日誌格式 format_str = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s' formatter = logging.Formatter(format_str, datefmt) fh.setFormatter(formatter) logger.addHandler(fh) while True: time.sleep(0.1) logging.info("test")

TimedRotatingFileHandlerorm

TimedRotatingFileHandler(filename [,when [,interval [,backupCount]]])#須要傳的參數blog

filename:日誌文件字符串

when:get

"S":secondinput

"M":minutes

"H":Hours

"D":Days

"W":week day (0=monday)

interval:是指等待多少個"when"時間後,logging會自動新建文件,好比when='S',interval=10,就是10個一秒後新建文件,也就是10秒,when='D',interval=1,就是一天一個文件

backupCount:保留日誌文件的個數  

相關文章
相關標籤/搜索