Python日志打印如何過(guò)濾敏感信息

小樊
112
2024-07-19 12:17:42

在Python中,可以通過(guò)使用logging模塊來(lái)實(shí)現(xiàn)日志的打印和過(guò)濾。如果想要過(guò)濾敏感信息,可以通過(guò)設(shè)置過(guò)濾器來(lái)實(shí)現(xiàn)。

下面是一個(gè)示例代碼,演示如何在日志中過(guò)濾敏感信息:

import logging

# 創(chuàng)建logger
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# 創(chuàng)建一個(gè)文件處理器,將日志寫入文件
file_handler = logging.FileHandler('my_log.log')
file_handler.setLevel(logging.DEBUG)

# 創(chuàng)建一個(gè)敏感信息過(guò)濾器
class SensitiveFilter(logging.Filter):
    def filter(self, record):
        # 檢查日志中是否包含敏感信息,如果包含則返回False
        if 'password' in record.msg:
            return False
        return True

# 將敏感信息過(guò)濾器添加到文件處理器中
file_handler.addFilter(SensitiveFilter())

# 創(chuàng)建一個(gè)格式化器
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 將文件處理器添加到logger中
logger.addHandler(file_handler)

# 輸出日志
logger.debug('This is a normal log message')
logger.debug('This is a log message with password: 123456')

在上面的示例中,我們首先創(chuàng)建了一個(gè)logger,并設(shè)置其日志級(jí)別為DEBUG。然后創(chuàng)建了一個(gè)文件處理器,并設(shè)置其日志級(jí)別為DEBUG。接著創(chuàng)建了一個(gè)敏感信息過(guò)濾器SensitiveFilter,用來(lái)過(guò)濾包含敏感信息的日志記錄。將敏感信息過(guò)濾器添加到文件處理器中。最后,將文件處理器添加到logger中,并輸出兩條日志信息,其中第二條包含了密碼信息。

通過(guò)設(shè)置敏感信息過(guò)濾器,我們可以確保敏感信息不會(huì)被記錄到日志文件中。

0