教你快速入门:Python Logging 使用指南( 二 )


创建日志处理器虽然上述方法直接明了 , 满足了一个简单的应用程序的需求 , 但对于一个软件产品或服务来说 , 需要全面的日志处理流程 。 因为很难在数以百万计的 DEBUG 级日志中找到某个 ERROR 级日志 。 此外 , 在整个程序和模块中 , 我们应当使用单一的 Logger 。 这样我们就可以正确地把日志添加到同一文件中 。 所以我们可以使用具有不同配置的 Handler 来处理这种任务 。
import logginglogger = logging.getLogger("My Logger")logger.setLevel(logging.DEBUG)console_handler = logging.StreamHandler()file_handler = logging.FileHandler('file.log', mode='w')console_handler.setLevel(logging.INFO)file_handler.setLevel(logging.DEBUG)logger.addHandler(console_handler)logger.addHandler(file_handler)复制代码可以看出 , 我们首先通过名称获取到一个 Logger 。 以此可以在程序的其他任意地方使用同一个 Logger 。 我们把全局的 Logging 等级设为最低的 DEBUG , 这样我们就可以在其他日志处理器中设置任意日志等级 。
接着 , 我们创建两个日志处理器 , 分别用于 console 和 file 形式的输出 , 并设置各自的日志等级 。 这可以减少控制台输出的开销 , 转而在文件中输出 。 这方便了以后的调试 。
教你快速入门:Python Logging 使用指南文章插图
对输出日志进行格式化Logging 不是只用来打印我们自己的信息的 。 有时候我们需要打印其他信息 , 例如时间、日志等级、进程 ID 。 因此我们需要对日志进行格式化 。 我们来看下面的代码 。
console_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s')file_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')console_handler.setFormatter(console_format)file_handler.setFormatter(file_format)复制代码添加 Handler 之前 , 我们可以像上面的代码那样设置日志输出的格式 。 可以用于设置日志格式的参数远不止这些 , 你可以访问(docs.python.org/3/library/l…
可重用的代码下面是我在许多应用程序中都用到的代码段 。 它可能会对你有所帮助 。
import logginglogger = logging.getLogger('Program Name-Version')logger.setLevel(logging.DEBUG)formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')consoleHeader = logging.StreamHandler()consoleHeader.setFormatter(formatter)consoleHeader.setLevel(logging.INFO)fileHandler = logging.FileHandler(f"{output}/metabcc-lr.log")fileHandler.setLevel(logging.DEBUG)fileHandler.setFormatter(formatter)logger.addHandler(fileHandler)logger.addHandler(consoleHeader)复制代码Logging 与多线程有关的特征记住 , Logging 模块是线程安全的 。 所以除了极少数例外情况(不在本文讨论范围内)使用 Logging 不需要为多线程编写额外的处理逻辑 。
本文虽然短小、简单 , 但我也希望它对初级程序员有所帮助 。
【教你快速入门:Python Logging 使用指南】最后多说一句 , 小编是一名python开发工程师 , 这里有我自己整理了一套最新的python系统学习教程 , 包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等 。 想要这些资料的可以关注小编 , 并私信“01”领取 。


推荐阅读