logging日誌模組

2022-07-02 14:42:08 字數 2977 閱讀 4745

#

logging日誌列印模組

import

logging

from tools.project_path import *

class

mylog:

defmy_log(self,msg,level):

#定義乙個日誌收集器

my_logger =logging.getlogger()

#設定級別 不指定級別會預設收集和輸出warning級別以上的

my_logger.setlevel("

debug")

#設定輸出格式

formatter =logging.formatter(

"%(asctime)s -%(levelname)s - %(filename)s[line:%(lineno)d] %(levelname)s-日誌資訊:%(message)s")

#建立乙個我們自己的輸出渠道控制台

ch =logging.streamhandler()

ch.setlevel(

"debug")

ch.setformatter(formatter)

#指定輸出到檔案(追加寫入)

fh = logging.filehandler(log_path, encoding="

utf-8")

fh.setlevel(

"debug")

fh.setformatter(formatter)

#兩者對接

my_logger.addhandler(ch)

my_logger.addhandler(fh)

#收集日誌

if level == "

debug":

my_logger.debug(msg)

elif level == "

info":

my_logger.info(msg)

elif level == "

warning":

my_logger.warning(msg)

elif level == "

error":

my_logger.error(msg)

elif level == "

critical":

my_logger.critical(msg)

#關閉日誌收集器

my_logger.removehandler(ch)

my_logger.removehandler(fh)

defdebug(self,msg):

self.my_log(msg,

"debug")

definfo(self,msg):

self.my_log(msg,

"info")

defwarning(self,msg):

self.my_log(msg,

"warning")

deferror(self,msg):

self.my_log(msg,

"error")

defcritical(self,msg):

self.my_log(msg,

"critical")

if__name__ == '

__main__':

my_logger =mylog()

my_logger.debug("1

")my_logger.info("2

")my_logger.error("3

")

還有一種方式,把logging寫成配置檔案,然後去讀取配置

log.conf

[loggers]

keys=root,infologger

[logger_root]

level=debug

handlers=consolehandler,filehandler

[logger_infologger]

handlers=consolehandler,filehandler

qualname=infologger

propagate=0

[handlers]

keys=consolehandler,filehandler

[handler_consolehandler]

class=streamhandler

level=info

formatter=form02

args=(sys.stdout,)

[handler_filehandler]

class=filehandler

level=info

formatter=form01

args=('

../logs/runlog.log

', 'a'

)[formatters]

keys=form01,form02

[formatter_form01]

format=%(asctime)s -%(levelname)s - %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

[formatter_form02]

format=%(asctime)s -%(levelname)s - %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

呼叫時,test_log.py

import

logging

import

logging.config

import

oscon_log='

./log.conf

'logging.config.fileconfig(con_log)

logging=logging.getlogger()

logging.info(

"test

")

日誌模組 logging模組

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

logging日誌模組

日誌級別日誌輸出 將日誌輸出到控制台 log1.py 如下 import logging logging.basicconfig level logging.warning,format asctime s filename s line lineno d levelname s message s...

logging 日誌模組

什麼是日誌 無處不在的 所有的程式必須記錄日誌 給使用者看的 購物軟體 銀行卡給內部人員看的 給技術人員看的 計算器500個表示式 一些計算過程,或者是一些操作過程需要記錄下來 程式出現bug的時候,來幫助我們記錄過程 排除錯誤 給非技術人員看的 學校,公司的軟體 誰在什麼時候做了什麼事兒,刪除操作...