1. 程式人生 > >Python3 logging 模塊

Python3 logging 模塊

_id view __file__ 擔心 setting console it works spl fat

Python3 logging模塊

日誌模塊:

用於便捷記錄日誌且線程安全的模塊

CRITICAL = 50

FATAL = CRITICAL

ERROR = 40

WARNING = 30

WARN = WARNING

INFO =20

DEBUG = 10

NOTSET = 0

設置為debug

import logging

技術分享
 1 import logging
 2  logging.debug(debug)
 3  logging.info(info)
 4  logging.warning(warning)
 5  logging.error(error)
 6  logging.critical(
critical) 7 8 logging.basicConfig(filename = access.log,format = %(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s, 9 datefmt = %Y-%m-%d %H:%M:%S %p, 10 level = 10) 11 logging.debug(debug) 12 formatter1=logging.Formatter(%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s
, 13 datefmt=%Y-%m-%d %H:%M:%S %p,) 14 fh1 = logging.FileHandler(test1.log) 15 fh2 = logging.FileHandler(test2.log) 16 fh3 = logging.FileHandler(test3.log) 17 ch = logging.StreamHandler() 18 19 fh1.setFormatter(formatter1) 20 fh2.setFormatter(formatter1) 21 fh3.setFormatter(formatter1)
22 ch.setFormatter(formatter1) 23 24 logger1 = logging.getLogger(egon) 25 logger1.setLevel(10) 26 logger1.addHandler(fh1) 27 logger1.addHandler(fh2) 28 logger1.addHandler(fh3) 29 logger1.addHandler(ch) 30 logger1.debug(debug) 31 logger1.info(info) 32 logger1.warning(warning) 33 logger1.critical(critical)
View Code

logging配置模板

技術分享
  1 import os
  2 
  3 import logging.config
  4 
  5  
  6 
  7 # 定義三種日誌輸出格式 開始
  8 
  9  
 10 
 11 standard_format = [%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]  12 
 13                   [%(levelname)s][%(message)s] #其中name為getlogger指定的名字
 14 
 15  
 16 
 17 simple_format = [%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s
 18 
 19  
 20 
 21 id_simple_format = [%(levelname)s][%(asctime)s] %(message)s
 22 
 23  
 24 
 25 # 定義日誌輸出格式 結束
 26 
 27  
 28 
 29 logfile_dir = os.path.dirname(os.path.abspath(__file__))  # log文件的目錄
 30 
 31  
 32 
 33 logfile_name = all2.log  # log文件名
 34 
 35  
 36 
 37 # 如果不存在定義的日誌目錄就創建一個
 38 
 39 if not os.path.isdir(logfile_dir):
 40 
 41     os.mkdir(logfile_dir)
 42 
 43  
 44 
 45 # log文件的全路徑
 46 
 47 logfile_path = os.path.join(logfile_dir, logfile_name)
 48 
 49  
 50 
 51 # log配置字典
 52 
 53 LOGGING_DIC = {
 54 
 55     version: 1,
 56 
 57     disable_existing_loggers: False,
 58 
 59     formatters: {
 60 
 61         standard: {
 62 
 63             format: standard_format
 64 
 65         },
 66 
 67         simple: {
 68 
 69             format: simple_format
 70 
 71         },
 72 
 73         id_simple: {
 74 
 75             format: id_simple_format
 76 
 77         },
 78 
 79     },
 80 
 81     filters: {},
 82 
 83     handlers: {
 84 
 85         #打印到終端的日誌
 86 
 87         console: {
 88 
 89             level: DEBUG,
 90 
 91             class: logging.StreamHandler,  # 打印到屏幕
 92 
 93             formatter: simple
 94 
 95         },
 96 
 97         #打印到文件的日誌,收集info及以上的日誌
 98 
 99         default: {
100 
101             level: DEBUG,
102 
103             class: logging.handlers.RotatingFileHandler,  # 保存到文件
104 
105             formatter: standard,
106 
107             filename: logfile_path,  # 日誌文件
108 
109             maxBytes: 1024*1024*5,  # 日誌大小 5M
110 
111             backupCount: 5,
112 
113             encoding: utf-8,  # 日誌文件的編碼,再也不用擔心中文log亂碼了
114 
115         },
116 
117         boss: {
118 
119             level: DEBUG,
120 
121             class: logging.handlers.RotatingFileHandler,  # 保存到文件
122 
123             formatter: standard,
124 
125             filename: boss.log,  # 日誌文件
126 
127             maxBytes: 1024 * 1024 * 5,  # 日誌大小 5M
128 
129             backupCount: 5,
130 
131             encoding: utf-8,  # 日誌文件的編碼,再也不用擔心中文log亂碼了
132 
133         },
134 
135     },
136 
137     loggers: {
138 
139         #logger1=logging.getLogger(__name__)拿到的logger配置
140 
141         ‘‘: {
142 
143             handlers: [default, console],  # 這裏把上面定義的兩個handler都加上,即log數據既寫入文件又打印到屏幕
144 
145             level: DEBUG,
146 
147             propagate: True,  # 向上(更高level的logger)傳遞
148 
149         },
150 
151         #logger1=logging.getLogger(‘collect‘)拿到的logger配置
152 
153         collect: {
154 
155             handlers: [boss,],  # 這裏把上面定義的兩個handler都加上,即log數據既寫入文件又打印到屏幕
156 
157             level: DEBUG,
158 
159             propagate: True,  # 向上(更高level的logger)傳遞
160 
161         },
162 
163     },
164 
165 }
166 
167 def load_my_logging_cfg():
168 
169     logging.config.dictConfig(LOGGING_DIC)  # 導入上面定義的logging配置
170 
171     # logger = logging.getLogger(__name__)  # 生成一個log實例
172 
173     # logger.info(‘It works!‘)  # 記錄該文件的運行狀態
174 
175 if __name__ == __main__:
176 
177     load_my_logging_cfg()
View Code

調用 logging 配置模板

技術分享
 1 import logging
 2 import my_log_settings
 3 my_log_settings.load_my_logging_cfg()
 4 
 5 logger1=logging.getLogger(__name__)
 6 logger2=logging.getLogger(collect)
 7 
 8 logger1.debug(默認日誌的debug)
 9 logger2.debug(給老板一封信)
10 logger2.debug(給前臺MM一封信)
View Code

Python3 logging 模塊