python日誌模板

来源:https://www.cnblogs.com/pythonywy/archive/2020/05/07/12844889.html
-Advertisement-
Play Games

```python import sys sys.path.append("./") import os import datetime import logging import platform from logging.handlers import RotatingFileHandler #... ...


import sys
sys.path.append("./")
import os
import datetime
import logging
import platform
from logging.handlers import RotatingFileHandler
#linux日誌路徑
LIUNX_LOG_PATH='/store/logs/xxxxxx/'
logger_dict={}



def _log(file_path,pform2):
    """
    1.創建logger
    2.創建handler
    3.定義formatter
    4.給handler添加formatter
    5.給logger添加handler
    :param file_path: 日誌路徑
    :param pform2: 日誌文件名字
    :return:
    """
    LOG_FILENAME = file_path + '/spiderPy.log'
    #獲取具有指定名稱(通道名稱)的日誌記錄器,並創建它
    logger  = logging.getLogger(pform2)
    #設置日誌等級
    logger.setLevel(logging.DEBUG)
    #RotatingFileHandler 將日誌記錄到一組文件的處理程式,該處理程式將從一個文件切換到另一個文件噹噹前文件達到一定大小時,切換到下一個
    handler = RotatingFileHandler(LOG_FILENAME, encoding='UTF-8', maxBytes=1024 * 1024 * 100, backupCount=999)
    # 設置日誌等級
    handler.setLevel(logging.DEBUG)
    # %(asctime)s字元串形式的當前時間。預設格式是 “2003-07-08 16:49:45,896”。逗號後面的是毫秒
    #%(levelname)s文本形式的日誌級別
    #%(funcName)s調用日誌輸出函數的函數名
    #%(lineno)s調用日誌輸出函數的語句所在的代碼行
    #%(message)s用戶輸出的消息
    # %(name)sLogger的名字
    # %(levelno)s數字形式的日誌級別
    # %(pathname)s調用日誌輸出函數的模塊的完整路徑名,可能沒有
    # %(filename)s調用日誌輸出函數的模塊的文件名
    # %(module)s調用日誌輸出函數的模塊名
    # %(created)f當前時間,用UNIX標準的表示時間的浮 點數表示
    # %(relativeCreated)d輸出日誌信息時的,自Logger創建以 來的毫秒數
    # %(thread)d線程ID。可能沒有
    # %(threadName)s線程名。可能沒有
    # %(process)d進程ID。可能沒有
    #日誌的輸出格式及方式做相關配置
    logging_format = logging.Formatter('%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')
    #給handler添加formatter
    handler.setFormatter(logging_format)
    #給logger添加handler
    logger.addHandler(handler)
    return logger


def myLogger(pform):

    file_name = datetime.datetime.now().strftime('%Y-%m-%d')
    pform2 = str(datetime.datetime.now().strftime('%Y_%m_%d_'))+pform

    #根據操作系統選擇路徑
    if "windows" in platform.platform().lower():
        file_path = os.getcwd() + "/logs/" + pform + "/" + file_name
    else:
        file_path = LIUNX_LOG_PATH + pform + "/" + file_name

    #沒路徑肯定沒當前文件路徑日誌對象
    if not os.path.exists(file_path):
        os.makedirs(file_path)
        logger_dict[pform]=_log(file_path,pform2)
    #有路徑可能有日誌對象
    else:
        #沒有對象 創建日誌對象
        if not logger_dict.get(pform):
            logger_dict[pform] = _log(file_path, pform2)

    return logger_dict[pform]

def logInfo(pform,content):
    try:
        myLogger(pform).info(content)
    except:
        myLogger(pform).info(content)

def logDebug(pform,cotent):
    try:
        myLogger(pform).debug(cotent)
    except:
        myLogger(pform).debug(cotent)

def logError(pform,content):
    try:
        myLogger(pform).error(content)
    except:
        myLogger(pform).error(content)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • flutter sdk安裝包 【下載地址】https://flutter.dev/docs/development/tools/sdk/releases#macos 下載完成後,操作步驟: cd ~/目標路徑 unzip ~/安裝包路徑 設置&更新環境變數 打開 $HOME/.bash_profil ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:William Mannard 歡迎點擊右上角關註小編,除了分享技術文章之外還有很多福利,私信學習資料可以領取包括不限於Python實戰演練、PDF電子文檔、面試集錦、 ...
  • 1. 簡介 在JDK中 適用於載入資源的類,但是 的實現類都是訪問網路資源的,並沒有可以從類路徑或者相對路徑獲取文件及 , 雖然可以通過自定義擴展URL介面來實現新的處理程式,但是這是非常複雜的,同時 介面中定義的行為也並不是很理想的 ,如檢測資源的存在等的行為,這也是 為什麼自己全新的開發一套自己 ...
  • 一、介面的預設方法 Java 8允許我們給介面添加一個非抽象的方法實現,只需要使用 default關鍵字即可,這個特征又叫做擴展方法,示例如下: interface Formula { double calculate(int a); default double sqrt(int a) { ret ...
  • 1.eclipse的版本介紹 所有版本的eclipse都按照系統分為32位和64位,如果你的JDK是32位,eclispe必須也是32位,eclipse應與JDK相符合 eclipse分SE和EE等版本,基礎篇SE版本即可,EE版本可向下相容SE版本,SE版本不能向上相容EE版本 2.下載和安裝ec ...
  • 項目簡介 項目來源於: "https://gitee.com/huang_xiao_feng/carrentalsystem" 本系統基於 Maven+JSP+SSM+Mysql 實現的汽車租賃管理系統。簡單實現了基礎管理、系統管理,業務管理和統計分析。 難度等級:中等 技術棧 編輯器 Intell ...
  • python在通過cmd安裝pandas時遇到ModuleNotFoundError: No module named 'pip'的報錯。 網上查詢後通過如下兩行cmd命令解決了 然後就可通過cmd安裝pandas啦 ...
  • 作者:iuxiaopeng https://www.cnblogs.com/paddix/p/5367116.html Synchronized 的基本使用 Synchronized 的作用主要有三個: 確保線程互斥的訪問同步代碼 保證共用變數的修改能夠及時可見 有效解決重排序問題 從語法上講,Sy ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...