擴展閱讀:
Python-Django的“日志功能-日志模塊(logging模塊)-日志輸出”的功能詳解
現在有下面的Python代碼:
# -*- coding: utf-8 -*-def log_out_test(content_out):print(content_out)content1 = "i love you01"
log_out_test(content1)
現在要把函數log_out_test()中的print語句中的內容以日志文件的形式輸出:
可以像下面這樣實現:
# -*- coding: utf-8 -*-import loggingdef log_out_test(content_out):logger01.debug(content_out)# 創建新的日志記錄器
logger01 = logging.getLogger("my_logger")# 配置日志記錄器的日志文件路徑和日志格式
file_handler_01 = logging.FileHandler('E:/log/my_log_file_01.log')
file_formatter_01 = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler_01.setFormatter(file_formatter_01)
logger01.addHandler(file_handler_01)# 設置日志級別
logger01.setLevel(logging.DEBUG)# 使用新的日志記錄器進行調試
content = "i love you"
log_out_test(content)
對于上面的代碼,如果認真讀過我的另一篇博文:Python-Django的“日志功能-日志模塊(logging模塊)-日志輸出”的功能詳解 那么理解起來應該是沒有問題。
不過這里還是補充說明一點:
問:為什么在函數log_out_test()的外部的實例化對象logger01并沒有通過參數傳遞到函數,在函數內部也可以調用?
答:在 Python 中,logging
模塊使用了全局狀態(global state),因此,在代碼中,logger01
實例化后成為一個全局變量。全局變量在整個模塊中都是可見的,因此你可以在模塊的任何地方訪問它。
運行上面的代碼后:
在路徑E:\log\
下生成了日志文件:my_log_file_01.log
內容如下:
我們修改下變量content的內容為"i love you02",再次運行上面的代碼,發現原來的日志文件并沒有被覆蓋,而是被追加到了后面。如下圖所示:
擴展閱讀:
Python-Django的“日志功能-日志模塊(logging模塊)-日志輸出”的功能詳解