代碼: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
測試:測試
[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:保留日誌文件的個數