1. 程式人生 > >Python logging模組 捕獲異常,並儲存為 logging 檔案

Python logging模組 捕獲異常,並儲存為 logging 檔案

____tz_zs

logging模組簡單使用 basicConfig

.

#!/usr/bin/python2.7
# -*- coding:utf-8 -*-

"""
@author:    tz_zs
"""
import logging
import time
import traceback
import sys

logging.basicConfig(level=logging.DEBUG,
                    format='asctime:        %(asctime)s \n'  # 時間
                           'filename_line:  %(filename)s_[line:%(lineno)d] \n'  # 檔名_行號
                           'level:          %(levelname)s \n'  # log級別
                           'message:        %(message)s \n',  # log資訊
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename=sys.path[1] + '/output/test_try_logging.log',  # sys.path[1]獲取當前的工作路徑
                    filemode='w')  # 如果模式為'a',則為續寫(不會抹掉之前的log)
i = 0
while i < 3:
    i += 1
    time.sleep(1)
    try:
        a = 1 / 0
    except ZeroDivisionError, e:
        # traceback.format_exc()為詳細情況
        logging.debug("%s____%s\n"
                      "traceback.format_exc():____%s" % (ZeroDivisionError, e, traceback.format_exc()))
        continue
    except BaseException, e:
        logging.debug("%s____%s" % (BaseException, e))
        continue

·

log檔案

asctime:        Mon, 02 Jul 2018 16:28:56 
filename_line:  test_try_logging.py_[line:31] 
level:          DEBUG 
message:        <type 'exceptions.ZeroDivisionError'>____integer division or modulo by zero
traceback.format_exc():____Traceback (most recent call last):
  File "/home/zmate/PycharmProjects/ZM_Lab_AI_research/development/test/test_try_logging.py", line 27, in <module>
    a = 1 / 0
ZeroDivisionError: integer division or modulo by zero
 

asctime:        Mon, 02 Jul 2018 16:28:57 
filename_line:  test_try_logging.py_[line:31] 
level:          DEBUG 
message:        <type 'exceptions.ZeroDivisionError'>____integer division or modulo by zero
traceback.format_exc():____Traceback (most recent call last):
  File "/home/zmate/PycharmProjects/ZM_Lab_AI_research/development/test/test_try_logging.py", line 27, in <module>
    a = 1 / 0
ZeroDivisionError: integer division or modulo by zero
 

asctime:        Mon, 02 Jul 2018 16:28:58 
filename_line:  test_try_logging.py_[line:31] 
level:          DEBUG 
message:        <type 'exceptions.ZeroDivisionError'>____integer division or modulo by zero
traceback.format_exc():____Traceback (most recent call last):
  File "/home/zmate/PycharmProjects/ZM_Lab_AI_research/development/test/test_try_logging.py", line 27, in <module>
    a = 1 / 0
ZeroDivisionError: integer division or modulo by zero

·

參考文章:

logging模組更多高階用法:

1、日誌級別

級別    級別數值    使用時機
DEBUG    10    詳細資訊,常用於除錯。
INFO    20    程式正常執行過程中產生的一些資訊。
WARNING    30    警告使用者,雖然程式還在正常工作,但有可能發生錯誤。
ERROR    40    由於更嚴重的問題,程式已不能執行一些功能了。
CRITICAL    50    嚴重錯誤,程式已不能繼續執行。
預設級別是WARNING,表示只有WARING和比WARNING更嚴重的事件才會被記錄到日誌內,低級別的資訊會被忽略。

原始碼中等級的對應關係:

CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0

2、Python 的 logging 模組主要包括:

Loggers:記錄器,提供應用程式程式碼能直接使用的介面;

Handlers:處理器,將記錄器產生的日誌傳送至目的地;

Filters:過濾器,提供更好的粒度控制,決定哪些日誌會被輸出;

Formatters:格式化器,設定日誌內容的組成結構和訊息欄位。

.

import logging


def log_client(file_name):
    # logging.basicConfig(level=logging.WARNING,
    #                     format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    #                     datefmt='%a, %d %b %Y %H:%M:%S',
    #                     # filename=sys.path[1] + '/output/log/get_market_quote_data_from_net.log',
    #                     filename='output/log/%s.log' % __file__.split("/")[-1].split(".")[0],
    #                     filemode='a')
    # 建立logger記錄器
    logger = logging.getLogger(file_name)
    logger.setLevel(logging.DEBUG)
    # 建立handler處理器
    handler = logging.FileHandler(filename='output/log/%s.log' % file_name, mode='a')
    handler.setLevel(logging.WARNING)
    # 建立formatter格式化器
    formatter = logging.Formatter(fmt='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
    handler.setFormatter(formatter)
    # 新增handler
    logger.addHandler(handler)
    return logger

.

相關推薦

Python logging模組 捕獲異常儲存 logging 檔案

____tz_zs logging模組簡單使用 basicConfig . #!/usr/bin/python2.7 # -*- coding:utf-8 -*- """ @author: tz_zs """ import logging import ti

Python+OGR庫學習(一):讀取點向量檔案屬性值和座標儲存TXT(一行一個要素值)

程式碼思路: 1、匯入相關庫包,切換到當前資料夾 2、註冊驅動,開啟點向量檔案,獲取圖層 3、開啟待寫入TXT檔案 4、遍歷要素: (1)獲取當前要素‘ID’和‘cover’欄位屬性 (2)獲取當前點要素對應幾何物件和其座標值X,Y (3)將ID、cover、X、Y寫入TXT檔案 (

python 利用imap接收郵件儲存附件

def SaveAttachImap():# login the imap server ,retrive the  new mails ,and download the attachments.    M = imaplib.IMAP4(mail_host,mail_po

獲取視訊的每一幀儲存.jpg圖片

#include<opencv2\opencv.hpp> #include <iostream> #include <stdio.h> #include<fstream> using namespace std; using names

編寫Python程式求地球表面兩點的球面距離打包exe檔案

編寫Python程式求地球表面兩點的球面距離 這是第一次使用Python針對具體需要來編寫一個相對完整的程式。 需求分析 有一個朋友常常需要計算兩個已知經緯座標的海上石油平臺之間的距離。 雖然這只是一個很簡單的解析幾何問題,但重複的計算依然耗時耗力。 設計一個程式來幫他完成這

如何在CAD中繪製聚合線儲存電腦桌面?

如何在CAD中繪製聚合線,並儲存為電腦桌面?在我們進行繪製CAD圖紙的時候,一般都是藉助一些工具來進行繪製的,那就是CAD編輯器,在CAD編輯器中,繪圖是最基本的操作,編輯器中也有很多的功能來工我們繪圖時來使用,但是在如何在CAD中繪製聚合線,並儲存為電腦桌面?具體要怎麼來操作呢?下面小編就來教教大家在迅捷C

Docker-建立一個mysql容器儲存本地映象

查詢docker hub上的映象 [[email protected] ~]$ docker search mysql NAME DESCRIPTION

raw資料新增影象頭儲存bmp影象(改進)

改進:不再從參考影象讀調色盤,程式內部建立調色盤 #include "stdio.h" #include "Windows.h" unsigned char *pBmpBuf;//讀入影象資料的指標 int bmpWidth;//影象的寬 int bmpHeight;//

android上用C語言讀取fb0實現截圖儲存rgb565的bmp

好久沒有看,這兩天在折騰一下,更新一下:修正了framebuffer bgra_8888格式截圖變紅的問題 =================================       android上用C語言讀取fb0實現截圖,儲存為bmp圖片, 支援16位

幾行Python程式碼生成飯店營業額模擬資料儲存CSV檔案

CSV檔案是一種通用的、簡單的檔案格式,以純文字形式儲存表格資料(數字和文字),在多個領域都有廣泛應用,經常用來在不同程式之間交換資料。 下面的程式碼使用Python標準庫datetime和random生成資料模擬一個飯店的銷量,然後使用標準庫csv寫入CSV檔案。可以調整程式中的數字,生成更多符合要求的資

Java讀取介面中的資料儲存到txt檔案中!

//建立讀取介面中資料的方法 public static String read() { URL url = null; BufferedReader reader = null; HttpURLConnection connection = null; I

robot framework讀取Excel檔案儲存list

最近剛使用Robot Framework不久,為了使程式碼和資料分離,需要讀取Excel文字資訊,問題困擾了一天,最後終於解決了, 讀檔案需要ExcelLibrary包支援 1.安裝ExcelLibrary 可以直接通過命令安裝:pip install robotfr

獲取12306站點對照資訊保持json檔案

import time import json import requests from requests.exceptions import RequestException def getResponse(url): try: headers = {'User-Agen

獲取當前螢幕影象儲存bmp檔案

此函式建立了1080p高清圖片,即解析度為:1920 x  1080 如果想建立不同的解析度圖片,可以修改函式中的 nWidth 和 nHeight. 此文僅供參考,如有不妥之處,請多多指教。 void Create1080p() {     int nWidth = 19

獲取資料夾下的檔案列表匯出txt檔案

#! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "wxf" # Email: [email protected] #

Windows客戶端開發--截圖儲存JPG檔案

JPG和PNG的區別: PNG is a true color lossless format. In practice it can accomplish a compression on standard photos of a factor of 2-3

python讀取sqlserver資料儲存到csv中

# -*- coding: utf-8 -*- """ @use:查詢17.11-18.1,18.6-18.8的PM2.5資料,匯出到csv """ import pymssql import xlwt import datetime from xml.dom.minidom import

python用opencv批量檢測人臉儲存

import cv2 import sys import os from PIL import Image cascPath = "haarcascade_frontalface_default.xml" #訓練引數檔案 faceCascade = cv2.CascadeCl

Python爬蟲實戰 :批量採集股票資料儲存到Excel中

小編說:通過本文,讀者可以掌握分析網頁的技巧、Python編寫網路程式的方法、Excel的操作,以及正則表示式的使用。這些都是爬蟲專案中必備的知識和技能。本文選自《Python帶我起飛》。 例項描述:通過編寫爬蟲,將指定日期時段內的全部上市公司股票資料爬取下來,並按照股

Python Flask捕獲異常捕獲404錯誤errorhandler()自定義異常處理函式

  demo.py(捕獲異常,自定義異常處理函式): # coding:utf-8 from flask import Flask app = Flask(__name__) # 捕獲404異常錯誤 @app.errorhandler(404) # 當發生404錯誤時,會被