【Python】规范脚本Log输出,将log输出到控制台同时写入文件中

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

实际上,很多同学都是使用python来做自动化测试,在很多情况下需要查看脚本运行的Log,根据Log来做问题分析。我们希望将脚本的log输出到控制台,同时也希望将脚本写入到文件中。下面简单介绍一下将log输出到控制台,并且将log写入到以当前时间命名的文件中。


提示:以下是本篇文章正文内容,下面案例可供参考

一、logging模块的引入

1、python有一个logging模块,我们可以使用它来规范log的输出。首先,需要下载logging模块,在命令行输入pip install logging进行安装:

pip install logging

二、logging模块的使用

1.引入库

代码如下(示例):

import logging

2.创建一个logger对象

创建一个logger对象,设置记录Log的等级。代码如下(示例):

logger = logging.getLogger()
logger.setLevel(logging.INFO) 

示例中设置记录的log等级为info,也可以修改为debug、warning、error、critical,根据自己的需求进行设置。

3.将日志写入文件

引入datetime,获取当前时间,用于对写入文件命名,并设置导出log文件的日志等级
代码如下(示例):

now = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
fileinfo = logging.FileHandler(f"AutoTest_log_{now}.log")
fileinfo.setLevel(logging.INFO) 

4.将日志输出到控制台

创建一个handler,来把记录的log输出到控制台。代码如下(示例):

controlshow = logging.StreamHandler()
controlshow.setLevel(logging.INFO)

5.定义handler的输出格式,简而言之就是输出的日志格式

这里设置的日志格式为时间+日志级别+日志信息。代码如下(示例):

formatter = logging.Formatter("%(asctime)s - %(levelname)s: %(message)s")
fileinfo.setFormatter(formatter)
controlshow.setFormatter(formatter)

6.将输出到文件的logger和输出到控制台的logger添加到handler里面

代码如下(示例):

logger.addHandler(fileinfo)
logger.addHandler(controlshow)

7.最后设置需要打印的log级别和打印的log内容

这里可以根据个人需要进行设置,例如:
logger.info(“这是第一条log”)
logger.warning(“这是第二条log”)
logger.error(“这是第三条log”)

完整代码如下:

import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO) 
#设置将日志输出到文件中,并且定义文件内容
now = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
fileinfo = logging.FileHandler(f"AutoTest_log_{now}.log")
fileinfo.setLevel(logging.INFO) 
#设置将日志输出到控制台
controlshow = logging.StreamHandler()
controlshow.setLevel(logging.INFO)
#设置日志的格式
formatter = logging.Formatter("%(asctime)s - %(levelname)s: %(message)s")
fileinfo.setFormatter(formatter)
controlshow.setFormatter(formatter)

logger.addHandler(fileinfo)
logger.addHandler(controlshow)
#例子
logger.info(“这是第一条log”)
logger.warning(“这是第二条log”)
logger.error(“这是第三条log”)

总结

本文介绍了python使用logging模块来规范脚本log的输出,实现将脚本log输出到控制台,并且将log写入以当前时间命名的log文件中。本文仅用于记录本人在实际编写脚本中的过程,如有侵权联系删除。如有什么地方有错误,欢迎不吝赐教。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Python提供了输出重定向的功能,可将控制台输出保存到文件。 在Python,使用sys库的stdout属性可以重定向输出。通过将stdout属性设置为一个文件对象,程序的所有输出都将被输出文件。 举个例子,以下是将print语句的输出保存到文件的代码: ```python import sys # Open a file for writing with open("output.txt", "w") as f: # Redirect stdout to the file sys.stdout = f # Print something print("Hello world!") # Reset stdout to the console sys.stdout = sys.__stdout__ ``` 在这个例子,我们打开了一个名为“output.txt”的文件以便写入,然后重定向了stdout属性以将输出写入该文件。我们打印了一个简单的“Hello world!”的消息,然后将stdout重置为控制台。 当代码运行后,输出将被写入到名为“output.txt”的文件。 需要注意的是,如果同时使用了print和其他输出函数,例如logging或matplotlib,那么还需要重定向它们的输出。可以使用sys库的stderr属性来处理这种情况。 ```python import sys # Open a file for writing with open("output.txt", "w") as f: # Redirect stdout and stderr to the file sys.stdout = f sys.stderr = f # Print something print("Hello world!") # Reset stdout and stderr to the console sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__ ``` 在这个例子,我们将stderr属性设置为与stdout相同的文件,以便将所有输出写入同一个文件,并在程序结束后重置stdout和stderr。 ### 回答2: Python 是一款多用途的脚本语言,广泛用于数据分析,网络编程,机器学习等领域。其,在数据处理方面它特别出色。在实际开发,我们常常需要将程序运行结果保存到文件,方便我们查看和分析。本文将介绍如何将控制台输出保存到文件。 在 Python ,我们可以使用 sys 模块来实现将控制台输出保存到文件的功能。sys 模块是 Python 的一个内置模块,可以提供对 Python 解释器进行访问和控制。 具体实现方法如下: 1. 首先,我们需要引入 sys 模块。 ```python import sys ``` 2. 接着定义一个文件对象 file,并将标准输出 sys.stdout 重定向到该文件对象。 ```python file = open('output.txt', 'w') sys.stdout = file ``` 其,'output.txt' 为文件名,'w' 表示以写入模式打开文件。 3. 此时,所有通过 print() 打印出来的内容都会被输出文件。 ```python print("Hello World") print("Python is great") ``` 4. 最后,我们需要将标准输出重定向回控制台,否则后续 print() 函数的调用仍然会将结果输出文件。 ```python sys.stdout = sys.__stdout__ # 将标准输出重定向回控制台 file.close() # 关闭文件 ``` 以上就是将控制台输出保存到文件的完整步骤。通过这种方法,我们可以将 Python 程序输出的结果保存到文件,方便我们查看和分析。 ### 回答3: 有时候我们需要在程序运行结束后查看运行过程控制台输出。将控制台输出保存到文件是一种常见的方式。 Python提供了将控制台输出保存到文件的方法,可以使用标准库的sys模块以及文件读写模块进行实现。具体步骤如下: 1. 引入sys模块 首先要导入sys模块,因为在sys模块有一个stdout属性,可以用于重定向标准输出。 ``` import sys ``` 2. 打开文件 接下来需要打开一个文件,用于保存控制台输出。 ``` output_file = open('output.txt', 'w') ``` 其,'output.txt'为文件名,'w'表示以写入方式打开文件,如果文件不存在则创建,如果文件存在则覆盖原有内容。 3. 重定向标准输出 接下来需要将标准输出重定向至文件。 ``` sys.stdout = output_file ``` 4. 将控制台输出保存至文件 接下来就可以运行程序,所有标准输出都会被重定向至文件。程序运行结束后,需要将sys.stdout重新指向控制台输出。 ``` #运行程序 print('Hello, World!') #将sys.stdout重新指向控制台输出 sys.stdout = sys.__stdout__ ``` 5. 关闭文件 最后要记得关闭文件。 ``` output_file.close() ``` 将控制台输出保存到文件是一种非常实用的技巧,在程序调试和输出结果查看方面都具备一定的帮助作用。掌握这种方法能为你的Python开发带来很大的便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值