# coding:utf-8
import logging, os
from time import strftime
now = strftime("%y-%m-%d.%h.%m.%s.")
class log(object):
def __init__(self):
# 檔案的命名
self.logname = os.path.join(os.path.dirname(__file__), now + 'test.log')
self.logger = logging.getlogger()
self.logger.setlevel(logging.debug)
# 日誌輸出格式
self.formatter = logging.formatter(
fmt="%(asctime)s %(levelname)s :%(message)s",
datefmt="%y-%m-%d %h:%m:%s"
)def __console(self, level, message):
# 建立乙個 filehandler,用於寫到本地
# fh = logging.filehandler(self.logname, 'a') # 追加模式 這個是python2的
fh = logging.filehandler(self.logname, 'a', encoding='utf-8') # 這個是 python3的
fh.setlevel(logging.debug)
fh.setformatter(self.formatter)
self.logger.addhandler(fh)
# 建立乙個 streamhandler,用於輸出到控制台
ch = logging.streamhandler()
ch.setlevel(logging.debug)
ch.setformatter(self.formatter)
self.logger.addhandler(ch)
if level == 'info':
self.logger.info(message)
elif level == 'debug':
self.logger.debug(message)
elif level == 'warning':
self.logger.warning(message)
elif level == 'error':
self.logger.error(message)
# 這兩行**是為了避免日誌輸出重複問題
self.logger.removehandler(ch)
self.logger.removehandler(fh)
# 關閉開啟的檔案
fh.close()
def debug(self, message):
self.__console('debug', message)
def info(self, message):
self.__console('info', message)
def warning(self, message):
self.__console('warning', message)
def error(self, message):
self.__console('error', message)
日誌模組 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的時候,來幫助我們記錄過程 排除錯誤 給非技術人員看的 學校,公司的軟體 誰在什麼時候做了什麼事兒,刪除操作...