python将日志写入文件(超详细)

2024-06-15 1920阅读

python将日志写入文件(超详细)

1、需求

  • 我们在训练模型的时候,有时候需要将训练日志输出到一个文件中,方便随时查看训练日志。

    训练模型时候,训练日志在控制台展示,关闭控制台后日志会消失。这时,我们需要将控制台中的训练日志信息输出到一个指定文件中,方便我们随时查看。

    将控制台中的日志信息输入到当前目录下的application.log文件中

    python将日志写入文件(超详细)

    python将日志写入文件(超详细)

    2、方法:python logging模块

    logging 是Python中非常强大且灵活的库,用于记录和跟踪应用程序运行时发生的事件。
    在Python中,使用 logging 模块可以写入日志信息到指定文件。
    

    2.1 basicConfig() 快速配置

    • 导入logging模块
    • 设置全局的日志格式和级别
    • 获取logger
    • 创建文件处理器,指定日志文件和日志级别(局部)
    • 添加文件处理器到logger
      import logging
      import warnings
      # 忽略所有 UserWarning 警告
      warnings.filterwarnings("ignore", category=UserWarning)
      # 1、设置全局的日志格式和级别
      logging.basicConfig(format='%(asctime)s - %(levelname)s - %(name)s - %(message)s',
                          datefmt='%m/%d/%Y %H:%M:%S',
                          level=logging.INFO)
      # 2、获取logger (给日志器起个名字 "__name__")
      logger = logging.getLogger(__name__)# __name__内置变量模块名称,轻松地识别出哪个模块产生了哪些日志消息(主程序模块)
      # 3、创建文件处理器,指定日志文件和日志级别(局部)---文件输出FileHandle(输出到指定文件)
      file_handler = logging.FileHandler('application.log') #指定日志文件名application.log,默认在当前目录下创建
      file_handler.setLevel(logging.INFO) # 设置日志级别(只输出对应级别INFO的日志信息)
      # 设置日志格式
      file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(name)s - %(message)s', '%m/%d/%Y %H:%M:%S')) 
      # 4、添加文件处理器到logger
      logger.addHandler(file_handler)
      # 训练模型的代码
      epoch = 7  
      # 记录日志信息
      logger.info("Get better performance at epoch {}".format(epoch))
      # 在主类中编写日志代码
      # 判断当前程序是否为主程序,确保 main() 函数只在直接运行该Python文件时执行,如果文件被其他模块导入,则不执行 main()
      # 主程序内置变量 __name__
      if __name__ == "__main__":
          main()
      

      2.2 查看application.log日志文件

      python将日志写入文件(超详细)

      2.3、logging知识

      • Loggers:应用程序中使用的接口,用于发送日志消息。它们来自logging.getLogger(name),name是用于标识logger源的字符串
      • Handlers:用于配置日志处理的目的地,如文件、控制台等。常用的有StreamHandler(控制台输出)和FileHandle(文件输出)
      • Formatters:定义最终输出中日志记录的布局
      • Filters:提供更细粒度的工具来进一步控制哪些日志记录将被输出

        2.4、日志级别

        debug,info,warning,error,critical
        
        • DEBUG:详细信息,通常只有在诊断问题时才感兴趣。
        • INFO:证明事情按预期工作(最常用)
        • WARNING:某些还不是错误的事情的指示,但是应该注意的。
        • ERROR:由于某些更严重的问题,软件已不能执行一些功能了
        • CRITICAL:严重错误,表明程序已不能继续运行。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]