python打印帶時間的日志實現(xiàn)代碼
一.整體說明
1.問題背景
python 中可以使用 print 進行日志打印,但是打印的很亂,而且不帶時間,看上去很不美觀,需要自定義一個帶不同日志等級的工具
2.print 用法
在 Python 中,print
是一個內置函數(shù),用于將文本或其他對象的表示輸出到標準輸出(通常是控制臺)。它是一種常用的調試和輸出信息的方式。
print
函數(shù)的基本語法如下:
print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
其中:
value1, value2, ...
是要打印的值或對象。多個值之間可以用逗號分隔。sep
是用于分隔多個值之間的字符串,默認為一個空格。end
是打印結束時的字符串,默認為換行符\n
。file
是輸出的文件對象,默認為標準輸出(控制臺)。flush
是一個布爾值,表示是否立即刷新輸出,默認為False
。
以下是一些示例:
print("Hello, world!") # 打印一個字符串 name = "Alice" age = 25 print("Name:", name, "Age:", age) # 打印多個值,使用默認分隔符和換行符 print("Hello", "world", sep="-") # 使用自定義分隔符 print("Hello", end="") # 不換行輸出 file = open("output.txt", "w") print("Hello, file!", file=file) # 輸出到文件 print("Hello, flush!", flush=True) # 立即刷新輸出
運行上述代碼后,將會在控制臺或指定的文件中看到相應的輸出結果。
print
函數(shù)在調試代碼、輸出程序運行結果以及向用戶提供信息時非常有用。您可以根據(jù)需要靈活使用它來滿足不同的打印需求
3.日志等級
在軟件開發(fā)和日志記錄中,常用的日志等級(Log Levels)通常遵循以下標準的層次結構:
DEBUG(調試):最低級別的日志,用于輸出詳細的調試信息。通常僅在開發(fā)和調試階段使用,用于追蹤代碼執(zhí)行過程中的細節(jié)。
INFO(信息):用于輸出程序運行中的一般信息,如程序啟動、關鍵事件、操作成功等。它提供對程序行為的整體了解。
WARNING(警告):用于輸出可能導致問題或潛在錯誤的警告信息,不會導致程序中斷或出現(xiàn)致命錯誤,但需要引起注意。
ERROR(錯誤):用于輸出錯誤信息,表示程序在某個特定點發(fā)生了錯誤,但并不會導致程序終止。錯誤日志通常指示程序出現(xiàn)了預料之外的情況。
CRITICAL(嚴重):最高級別的日志,用于輸出嚴重錯誤和致命錯誤。表示程序遇到了無法繼續(xù)執(zhí)行的嚴重問題,并可能導致程序崩潰或無法正常運行。
此外,還存在一些其他的日志等級,其具體名稱和定義可能會根據(jù)不同的日志庫和框架而有所差異。例如:
- TRACE(跟蹤):比 DEBUG 更詳細的日志級別,用于輸出比調試級別更細粒度的信息。
- FATAL(致命):與 CRITICAL 等價,用于表示致命錯誤。
請注意,不同的日志庫和框架可能對這些日志等級的命名和定義有所差異。在實際使用時,您可以根據(jù)具體的需求和日志記錄庫的文檔來選擇適合的日志等級。
二.代碼實現(xiàn)
1.完整代碼
import logging class TimeStampedLogger: def __init__(self, log_level=logging.INFO): self.logger = self._configure_logger(log_level) def _configure_logger(self, log_level): logger = logging.getLogger(__name__) logger.setLevel(log_level) formatter = logging.Formatter('%(asctime)s - %(message)s') stream_handler = logging.StreamHandler() stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) return logger def info(self, message): self.logger.info(message) def debug(self, message): self.logger.debug(message) logger = TimeStampedLogger()
2.擴展方法
可以添加不同等級的日志
def info(self, message): self.logger.info(message) def debug(self, message): self.logger.debug(message)
附:Python中打印日志,文件,行號,當前時間
寫一個函數(shù)實現(xiàn)python的日志功能:
調用函數(shù),打印當前時間,打印當前行號,文件函數(shù)名稱
便于找bug
import sys,time def Log(msg,line,name): #文件地址 __file__,可選添加 date = time.strftime('%Y.%m.%d %H:%M:%S ',time.localtime(time.time())) print(date+':'+ msg +', Line '+line+' , in '+name) if __name__ == '__main__': Log('hello',str(sys._getframe().f_lineno),sys._getframe().f_code.co_name) #2022.03.25 11:52:15 :hello, Line 9 , in <module>
打印結果:2022.03.25 11:52:15 :hello, Line 9 , in <module>
總結
到此這篇關于python打印帶時間的日志實現(xiàn)的文章就介紹到這了,更多相關python打印帶時間日志內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python 多個圖同時在不同窗口顯示的實現(xiàn)方法
今天小編就為大家分享一篇Python 多個圖同時在不同窗口顯示的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07使用Pytorch實現(xiàn)Swish激活函數(shù)的示例詳解
激活函數(shù)是人工神經(jīng)網(wǎng)絡的基本組成部分,他們將非線性引入模型,使其能夠學習數(shù)據(jù)中的復雜關系,Swish 激活函數(shù)就是此類激活函數(shù)之一,在本文中,我們將深入研究 Swish 激活函數(shù),提供數(shù)學公式,探索其相對于 ReLU 的優(yōu)勢,并使用 PyTorch 演示其實現(xiàn)2023-11-11python scatter散點圖用循環(huán)分類法加圖例
這篇文章主要為大家詳細介紹了python scatter散點圖用循環(huán)分類法加圖例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03Python連接MySQL并使用fetchall()方法過濾特殊字符
這篇文章主要介紹了Python連接MySQL的方法并講解了如何使用fetchall()方法過濾特殊字符,示例環(huán)境為Ubuntu操作系統(tǒng),需要的朋友可以參考下2016-03-03Python?PyQt5中窗口數(shù)據(jù)傳遞的示例詳解
開發(fā)應用程序時,若只有一個窗口則只需關心這個窗口里面的各控件之間如何傳遞數(shù)據(jù)。如果程序有多個窗口,就要關心不同的窗口之間是如何傳遞數(shù)據(jù)。本文介紹了PyQt5中三種窗口數(shù)據(jù)傳遞,需要的可以了解一下2022-12-12