Python日志日志记录入门学习

  Python日志

<代码> 原来真的远比我想象的要复杂很多很多,学习路线堪比git。但是又绕不过去,选择又少,所以必须要予以重视,踏踏实实认认真真的来好好学学才行。
  

  

学习日志的目的:
  

  

简单脚本还好,打印足够。
  

  

但是稍微复杂点,哪怕是三四个文件加起来两三百行代码,调试也开始变复杂起来了。
  

  

再加上如果是后台长期运行的那种脚本,运行信息的调查更是复杂起来。
  

  

一开始我还在各种查<代码> crontab> <代码>后台运行查看,或者是python stdout <代码> 的获取等等,全都找错了方向。
  

  

真正的解决方案在于正确的日志记录。
  

  

记录好了的话,我不需要去找python的控制台输出stdout,也不需要找crontab的日志,只需要查看日志文件即可。
  

  

下面是python的测井学习记录。

  

<强>最简单的日志输出(无文件记录)
  

        导入日志      logging.error(“出现了错误”)   logging.info(“打印信息”)   logging.warning(“警告信息”)      

<强>首先,忘掉logging.info () !忘掉logging.basicConfig () !
  

  

网上各种关于python日志的文章实在是太不体谅新手了,日志这么复杂的东西竟然想表现得很简单,还用各种简单的东西做假象。
  

  

实际上我们真正要用起来的日志,绝对是不会直接用<代码> logging.info() 和<代码> logging.basicConfig() 这样的,这是此模块的官方推出来迷惑人的——看似让你一键上的手,快速看到结果,但是跟实际真的不搭!
  

  

所以为了后面解释起来轻松,必须先警告这点:忘记它们俩!
  

  

记住,唯一要用到<代码>日志。什么的,就只有<代码> logging.getLogger() 这一次。

  

<>强了解记录的工作流
  

  

不想上流程图一类的东西,那样反而更迷糊。
  

  

简单说吧:
  

  

<代码>日志模块是会自动将你自定制的记录器对象<代码>全局化>   

  

也就是说,你在自己的模块里只要定义了一次某个记录器,比如叫日志,那么只要是在同一个模块中运行的其他文件都能读取到它。
  

  

比如说,你在主文件main.py中自定义了一个日志,可能设置了什么输出文件,输出格式什么的,然后你在<代码> main.py> sub.py> 记录器=logging.getLogger(“之前在main.py定义的日志名”)即可获得之前的一切自定义设置。

  

当然,被调用的文件(先称为子模块)中,用<代码> logging.getLogger(“日志名”)时,最好在日志名后加一个<代码>。子名称这样的,比如main.sub。这样输出的时候就会显示出来某条日志记录是来自于这个文件里了。当然,。前面的父级记录器必须名字一致,是会被识别出来的!
  

  

然后,子日志还可以再子日志,甚至一个子模块可以再让所有函数各又一个子子日志,比如main.sub.func1这样的. log都会根据。识别出来上下级关系的。

  

这样一说,实际上也就是类类继承的那种机制了。你按照父级名称继承,然后还可以改写自己的新设置等。

  

了解了这些概念以后,才能来谈代码。实际上也就好理解多了。

  

<强>设置记录器的方法
  

  

看来看去,这篇文章说得比较全面也最清楚,以下很多都参考到它的内容:Python 101:一种介绍日志

  

一般想要自定义一个记录器,比如让它输出信息时按照什么格式显示,输出到哪个文件,要不要输出到屏幕一类,有三种方法可以达到设置:

  
      <李>直接在python代码里设置李   <李>用外部的config.ini文件配置李   <李>用python的dict字典配置李   
  

三种达到的目的都是一样的,字典用的人很少也不方便,配置文件比较好用只是. ini的语法不是很方便读,且不容易做到变量的动态设置,所以一般直接在python代码里写就好。

  

<强>常用设置语句
  

  

以下是程序主入口文件的通用写法,注意,一定要在主入口定义好记录器,这样其他所有的子模块才能够继承到。

Python日志日志记录入门学习