1. 程式人生 > >Python之log的處理方式

Python之log的處理方式

lin demo env os.path lte als ati con _file__

配置文件:

 1 #! /usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 """
 4 logging配置
 5 """
 6 
 7 import os
 8 import logging.config
 9 
10 # 定義三種日誌輸出格式 開始
11 
12 standard_format = [%(asctime) -s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d] 13                   [%(levelname)s][%(message)s]
14 15 simple_format = [%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s 16 17 id_simple_format = [%(levelname)s][%(asctime)s] %(message)s 18 19 # 定義日誌輸出格式 結束 20 21 logfile_dir = os.path.dirname(os.path.abspath(__file__)) # log文件的目錄 22 23 logfile_name = all2.log # log文件名 24
25 # 如果不存在定義的日誌目錄就創建一個 26 if not os.path.isdir(logfile_dir): 27 os.mkdir(logfile_dir) 28 29 # log文件的全路徑 30 logfile_path = os.path.join(logfile_dir, logfile_name) 31 32 # log配置字典 33 LOGGING_DIC = { 34 version: 1, 35 disable_existing_loggers: False, 36 formatters: { 37
standard: { 38 format: standard_format, 39 datefmt: %Y-%m-%d %H:%M:%S, 40 }, 41 simple: { 42 format: simple_format 43 }, 44 }, 45 filters: {}, 46 handlers: { 47 console: { 48 level: DEBUG, 49 class: logging.StreamHandler, # 打印到屏幕 50 formatter: simple 51 }, 52 default: { 53 level: DEBUG, 54 class: logging.handlers.RotatingFileHandler, # 保存到文件 55 filename: logfile_path, # 日誌文件 56 maxBytes: 1024*1024*5, # 日誌大小 5M 57 backupCount: 5, 58 formatter: standard, 59 encoding: utf-8, # 日誌文件的編碼,再也不用擔心中文log亂碼了 60 }, 61 }, 62 loggers: { 63 ‘‘: { 64 handlers: [default, console], # 這裏把上面定義的兩個handler都加上,即log數據既寫入文件又打印到屏幕 65 level: DEBUG, 66 propagate: True, # 向上(更高level的logger)傳遞 67 }, 68 }, 69 } 70 logging.config.dictConfig(LOGGING_DIC) # 導入上面定義的配置 71 logger = logging.getLogger(__name__) # 生成一個log實例 72 logger.info(It works!) # 記錄該文件的運行狀態

調用測試文件:

 1 #! /usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 """
 4 MyLogging Test
 5 """
 6 
 7 import time
 8 import logging
 9 from log_demo import my_logging  # 導入自定義的logging配置
10 
11 logger = logging.getLogger(__file__)  # 生成logger實例
12 
13 
14 def demo():
15     logger.debug("start range... time:{}".format(time.time()))
16     logger.info("中文測試開始。。。")
17     for i in range(10):
18         logger.debug("i:{}".format(i))
19         time.sleep(2)
20     else:
21         logger.debug("over range... time:{}".format(time.time()))
22     logger.info("中文測試結束。。。")
23 
24 if __name__ == "__main__":
25     demo()

Python之log的處理方式