在Python編程中,log日志是非常重要的部分,在開發中使用非常廣泛。Python內置了logging模塊,使用起來也比較方便。很多時候,我們可能需要往一個已有的log文件中增加新的日志信息,但是在有些情況下,日志沒有被追加,而是被覆蓋掉了。
為了解決這個問題,我們需要對logging模塊的基本使用方法有一定的了解:
import logging # 創建一個logger logger = logging.getLogger(__name__) # 設置日志輸出的級別 logger.setLevel(logging.INFO) # 創建一個文件處理器 handler = logging.FileHandler('test.log') handler.setLevel(logging.INFO) # 創建一個日志格式化對象 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) # 給logger添加處理器 logger.addHandler(handler) # 輸出日志信息 logger.info('Start print log') logger.debug('Do something') logger.warning('Something maybe fail.') logger.info('Finish')
上面的代碼就是一個簡單的logging模塊的使用案例。其中logger對象和handler對象分別代表了日志輸出器和日志處理器。handler對象也可以接收一個字符串或一個文件對象作為輸出目的地。
現在假設我需要往test.log這個文件中添加一些新的日志信息,我們再次運行這段代碼,結果發現文件中的原有內容被覆蓋掉了。造成這種情況的原因是因為我們創建handler的時候沒有指定文件的打開方式,對于這種情況我們只需要在創建handler的時候添加一個"mode"參數即可,可以設置為"a"表示以追加方式打開文件。
handler = logging.FileHandler('test.log', mode='a')
使用以上代碼,程序就會以追加方式打開文件,并將日志信息追加寫入文件中,而不會覆蓋原有日志內容。
通過以上方法,我們可以很簡單地往日志文件中寫入新的日志信息,而不會丟失原有的日志信息。這對于日志的維護和問題定位都非常有幫助。