怎么把python运行结果保存到log?

Python022

怎么把python运行结果保存到log?,第1张

通过管道输出到另一个程序里去,另外一个程序同时打印并输出到out.log。

用自己的myprint代替所有的print语句。这样你可以同时输出到屏幕与文件了。

通过logging。这个模块支持多个listener,可以同时输出到屏幕与文件以及网络。

python test.py >1.log

将输出结果记录到1.log(覆盖写入)

python test.py >>1.log

将输出结果追加到1.log(每次追加)

这个简单啊。通过管道输出到另一个程序里去,另外一个程序同时打印并输出到out.log

这是我常用的办法。

还有一个笨办法,用自己的myprint代替所有的print语句。这样你可以同时输出到屏幕与文件了。

第三个办法是通过logging。这个模块支持多个listener,可以同时输出到屏幕与文件以及网络。

从事与软件相关工作的人,应该都听过“日志”一词。

日志就是跟踪软件运行时事件的方法,为了能够在程序运行过程中记录错误。

通过日志记录程序的运行,方便我们查询信息,以便追踪问题、进行维护和调试、还是数据分析。

并且各编程语言都形成了各自的日志体系和相应的框架。

日志的作用总结:

首先我们要树立一个观点,那就是“不是为了记录日志而记录日志,日志也不是随意记的”。要实现能够只通过日志文件还原整个程序执行的过程,达到能透明地看到程序里执行情况,每个线程每个过程到底执行结果的目的。日志就像飞机的黑匣子一样,应当能够复原异常的整个现场乃至细节。

在项目中,日志这个功能非常重要,我们要重视起来。

在Python中,使用logging模块来进行日志的处理。

logging是Python的内置模块,主要用于将日志信息进行格式化内容输出,可将格式化内容输出到文件,也可输出到屏幕。

我们在开发过程中,常用print()函数来进行调试,但是在实际应用的部署时,我们要将日志信息输出到文件中,方便后续查找以及备份。

在我们使用日志管理时,我们也可以将日志格式化成Json对象转存到ELK中方便图形化查看及管理。

logging模块将日志系统从高向低依次定义了四个类,分别是logger(日志器)、handler(处理器)、filter(过滤器)和formatter(格式器)。其中由日志器生成的实例将接管原本日志记录函数logging.log的功能。

说明:

我们先来思考下下面的两个问题:

在软件开发阶段或部署开发环境时,为了尽可能详细的查看应用程序的运行状态来保证上线后的稳定性,我们可能需要把该应用程序所有的运行日志全部记录下来进行分析,这是非常耗费机器性能的。

当应用程序正式发布或在生产环境部署应用程序时,我们通常只需要记录应用程序的异常信息、错误信息等,这样既可以减小服务器的I/O压力,也可以避免我们在排查故障时被淹没在日志的海洋里。

那么怎样才能在不改动应用程序代码的情况下,根据事件的重要性或者称之为等级,实现在不同的环境中,记录不同详细程度的日志呢?

这就是日志等级的作用了,我们通过配置文件指定我们需要的日志等级就可以了。

说明:

总结:

开发应用程序时或部署开发环境时,可以使用DEBUG或INFO级别的日志获取尽可能详细的日志信息,可以方便进行开发或部署调试。 应用上线或部署生产环境时,应用使用WARNING或ERROR或CRITICAL级别的日志,来降低机器的I/O压力和提高获取错误日志信息的效率。 日志级别的指定通常都是在应用程序的配置文件中进行指定的。 不同的应用程序所定义的日志等级会有所差别,根据实际需求来决定。