日誌模組的新增

2021-10-02 19:06:31 字數 3642 閱讀 4910

日誌的等級:

import logging

# 日誌的五個等級,等級依次遞增

# 預設是warning等級

logging.debug

logging.info

logging.warning

logging.error

logging.critical

# 設定日誌等級

logging.basicconfig(level=logging.info)

# 使用

logging.debug(

'debug'

)logging.info(

'info'

)logging.warning(

'warning'

)logging.error(

'error'

)logging.critical(

'critical'

)

捕獲異常資訊到日誌。這裡主要需要進行捕獲異常才能記錄下完整的異常資訊

try

:raise exception(

"異常"

)except exception as e:

logging.exception(e)

日誌的輸出格式 對於日誌的輸出格式,我們能夠進行自定義,包括輸出的內容格式和時間格式

format格式說明:

%

(name)s logger的名字

%(levelno)s 數字形式的日誌級別

%(levelname)s 文字形式的日誌級別

%(pathname)s 呼叫日誌輸出函式的模組的完整路徑名,可能沒有

%(filename)s 呼叫日誌輸出函式的模組的檔名

%(module)s 呼叫日誌輸出函式的模組名

%(funcname)s 呼叫日誌輸出函式的函式名

%(lineno)d 呼叫日誌輸出函式的語句所在的**行

%(created)f 當前時間,用unix標準的表示時間的浮 點數表示

%(relativecreated)d 輸出日誌資訊時的,自logger建立以 來的毫秒數

%(asctime)s 字串形式的當前時間。預設格式是 「2003-07

-0816:

49:45,

896」。逗號後面的是毫秒

%(thread)d 執行緒id。可能沒有

%(threadname)s 執行緒名。可能沒有

%(process)d 程序id。可能沒有

%(message)s 使用者輸出的訊息

datefmt引數說明:

%y 兩位數的年份表示(00

-99)

%y 四位數的年份表示(000

-9999)

%m 月份(01

-12)

%d 月內中的一天(0

-31)

%h 24小時制小時數(0

-23)

%i 12小時制小時數(01

-12)

%m 分鐘數(00

=59)

%s 秒(00

-59)

%a 本地簡化星期名稱

%a 本地完整星期名稱

%b 本地簡化的月份名稱

%b 本地完整的月份名稱

%c 本地相應的日期表示和時間表示

%j 年內的一天(001

-366)

%p 本地a.m.或p.m.的等價符

%u 一年中的星期數(00

-53)星期天為星期的開始

%w 星期(0

-6),星期天為星期的開始

%w 一年中的星期數(00

-53)星期一為星期的開始

%x 本地相應的日期表示

%x 本地相應的時間表示

%z 當前時區的名稱%%

%號本身

import sys

import logging

# 預設的配置

default_log_level = logging.info # 預設等級

default_log_fmt =

'%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s'

# 預設日誌格式

defualt_log_datefmt =

'%y-%m-%d %h:%m:%s'

# 預設時間格式

default_log_filename =

'log.log'

# 預設日誌檔名稱

class

logger

(object):

def__init__

(self)

:# 1. 獲取乙個logger物件

self._logger = logging.getlogger(

)# 2. 設定format物件

self.formatter = logging.formatter(fmt=default_log_fmt,datefmt=defualt_log_datefmt)

# 3. 設定日誌輸出

# 3.1 設定檔案日誌模式

self._logger.addhandler(self._get_file_handler(default_log_filename)

)# 3.2 設定終端日誌模式

self._logger.addhandler(self._get_console_handler())

# 4. 設定日誌等級

self._logger.setlevel(default_log_level)

def_get_file_handler

(self, filename)

:'''返回乙個檔案日誌handler'''

# 1. 獲取乙個檔案日誌handler

filehandler = logging.filehandler(filename=filename,encoding=

"utf-8"

)# 2. 設定日誌格式

filehandler.setformatter(self.formatter)

# 3. 返回

return filehandler

def_get_console_handler

(self)

:'''返回乙個輸出到終端日誌handler'''

# 1. 獲取乙個輸出到終端日誌handler

console_handler = logging.streamhandler(sys.stdout)

# 2. 設定日誌格式

console_handler.setformatter(self.formatter)

# 3. 返回handler

return console_handler

@property

deflogger

(self)

:return self._logger

# 初始化並配乙個logger物件,達到單例的

# 使用時,直接匯入logger就可以使用

logger = logger(

).logger

新增日誌 為ceph無日誌模組新增日誌

最近在分析ceph某個模組的時候,發現該模組沒有日誌輸出模組 也就是無法直接使用dout列印日誌 基於此整理了下怎麼樣可以正常使用日誌列印。話不多說,直接貼 好了。如下,在subsys.h中新增想新增的子模組 root fe4fcb2c09b7 tmp ceph luminous git diff ...

日誌模組 logging模組

logging.debug 通常除錯時用到的日誌資訊 logging.info 證明事情按照預期的那樣工作 longging.warning 表明發生了意外,或者不就得將來發生的問題 如 磁碟滿了 軟體還是正常的工作 longging.error 由於更嚴重的問題導致軟體已經不能繼續執行某些功能 l...

Nginx 熱部署及新增模組和日誌切割

當從老版本替換為新版本的 nginx 的時候,如果不熱部署的話,會需要取消 nginx 服務並重啟服務才能替換成功,這樣的話會使正在訪問的使用者在斷開連線,所以為了在不影響使用者的體驗下進行版本公升級,就需要熱部署來公升級版本。因為進行公升級主要是更換二進位制檔案,所以在公升級前先備份舊的二進位制檔...