Python日志模块logging高级用法_多级日志配置技巧【教学】

admin 百科 17
Python logging模块需避免root logger,按模块名(如"app.db")创建独立logger并设不同级别;通过多个Handler实现多目标输出;用dictConfig动态适配环境;注意basicConfig只生效一次、防Handler重复添加等陷阱。

Python日志模块logging高级用法_多级日志配置技巧【教学】-第1张图片-佛山资讯网

Python的logging模块远不止logging.basicConfig()logger.info()这么简单。真正实用的项目中,需要按模块分级输出、区分开发/生产环境、同时写入文件和控制台、甚至动态调整日志级别——这些都依赖对HandlerFormatterFilterLogger层级关系的精准控制。

按模块设置不同日志级别

大型项目常需让核心模块(如数据库操作)输出DEBUG级日志,而UI层只记录WARNING以上。关键在于**避免使用root logger**,而是为每个模块创建独立命名的logger:

  • db.py中:logger = logging.getLogger("app.db"),再调用logger.setLevel(logging.DEBUG)
  • ui.py中:logger = logging.getLogger("app.ui"),设为WARNING
  • 所有logger共享同一组Handler(如一个FileHandler),但各自级别独立生效
  • 注意:logger名带点号(如"app.db")会自动构成层级关系,"app"的级别不会覆盖子logger的显式设置

多目标输出:控制台+文件+错误专用文件

一个典型配置是:INFO及以上写入主日志文件,ERROR单独存到error.log,同时DEBUG以上实时打印到终端。这需要多个Handler协同工作:

  • 创建RotatingFileHandler处理主日志,设level=logging.INFO
  • 创建第二个RotatingFileHandler专捕ERROR,用setLevel(logging.ERROR)并添加Filter确保只传ERROR
  • StreamHandler输出到终端,设为DEBUG,再配自定义Formatter加颜色(可用colorama或ANSI转义)
  • 所有Handler都add到同一个logger(如logging.getLogger("app")),而非分别add到不同logger

环境感知配置:开发/测试/生产自动切换

通过读取环境变量或配置文件,动态加载不同策略:

标签: python app ai 环境变量 stream 配置文件 开发环境 asic

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~