You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python logging遇DeprecationWarning及日志文件空问题咨询

Python logging模块问题解答

1. DeprecationWarning警告问题

  • 警告含义:你导入的formatter是Python已废弃的旧模块,官方不再维护,所以抛出该警告提示你停止使用。
  • 你的格式化方式没问题:你实际用到的logging.Formatter是logging模块的标准用法,完全没有过时。
  • 解决方法:直接删掉代码第一行的import formatter,这个导入完全多余,你根本没用到该模块的内容。

2. 日志文件为空的问题

  • 核心原因:你创建了file_logging文件处理器,但没有将它添加到logger实例中,只添加了控制台处理器console_logging,导致日志只会输出到控制台,不会写入文件。
  • 解决方法:在logger.addHandler(console_logging)后面添加一行:
    logger.addHandler(file_logging)
    
  • 额外提示:代码里还有几处逻辑小问题,比如user_name函数的循环逻辑不完整,user_password里的日志内容写错(把Pin写成了Username),这些可以顺手修正。

修正后的完整代码

import logging, sys

logger = logging.getLogger(__name__)
console_logging = logging.StreamHandler(sys.stdout) # 日志输出到控制台
file_logging = logging.FileHandler('log_to_file.log') # 日志写入文件

formatter = logging.Formatter('%(asctime)s - %(message)s - %(levelname)s') # 定义日志格式
console_logging.setFormatter(formatter)
file_logging.setFormatter(formatter)

# 同时添加控制台和文件处理器
logger.addHandler(console_logging)
logger.addHandler(file_logging)
logger.setLevel(logging.INFO) # 设置日志级别为INFO及以上


def user_name():
    while True:
        name = input("\nEnter your username: ")
        valid = True
        for letter in name:
            if letter not in 'abcdefghijklmnopqrstuvwxyz':
                logger.error('Username has to contain only letters')
                valid = False
                break
        if valid:
            logger.info(f'Username Entered: {name}')
            break
        name = input('\nTry again: ')


def user_password():
    while True:
        try:
            password = int(input("\nEnter account pin: "))
            while password != 1234:
                logger.error("Invalid pin.")
                password = int(input("\nTry again: "))
            logger.info(f'Pin Entered: {password}')
            break
        except ValueError:
            logger.error("Pin must be a number.")


user_name()
user_password()

内容的提问来源于stack exchange,提问作者gginchev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:50:23