Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python是否有像PHP一样的标准错误日志文件和错误日志函数?_Php_Python_Error Logging - Fatal编程技术网

Python是否有像PHP一样的标准错误日志文件和错误日志函数?

Python是否有像PHP一样的标准错误日志文件和错误日志函数?,php,python,error-logging,Php,Python,Error Logging,作为一名开发人员,尝试从php转换为python。目前正在尝试调试一个运行大约需要45分钟的python脚本。从命令行运行时,它还没有死掉。从cron运行时,大约有一半时间会死亡 使用php,我可以返回到它运行的方框,检查它运行时的日志文件,并在脚本崩溃时查找/修复错误。python也有类似的功能吗?python可以在文件中打印日志,但这并不是现成的行为。默认情况下,它打印的日志级别等于或高于stderr上的警告: import logging logging.de

作为一名开发人员,尝试从php转换为python。目前正在尝试调试一个运行大约需要45分钟的python脚本。从命令行运行时,它还没有死掉。从cron运行时,大约有一半时间会死亡

使用php,我可以返回到它运行的方框,检查它运行时的日志文件,并在脚本崩溃时查找/修复错误。python也有类似的功能吗?

python可以在文件中打印日志,但这并不是现成的行为。默认情况下,它打印的日志级别等于或高于stderr上的警告:

import logging              

logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
以下是运行此脚本时发生的情况:

$ python log.py            
WARNING:root:warning
ERROR:root:error
CRITICAL:root:critical

$ python log.py 2>/dev/null   # does not print anything

$
因此,如果您将stderr重定向到cron作业中的某个文件,您至少应该看到该文件中的警告和错误。如果要轻松地直接登录到文件,可以使用
logging.basicConfig

import logging                                                                

# print log in example.log instead of the console, and set the log level to DEBUG (by default, it is set to WARNING)
logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)

logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
现在,如果您运行它,您不应该再在控制台中有任何输入,但所有内容都应该在
示例中。log

$ python log.py         

$ cat example.log       
DEBUG:root:debug        
INFO:root:info          
WARNING:root:warning    
ERROR:root:error        
CRITICAL:root:critical  

您将在

中找到更多详细信息和配置选项。我相信您要求的是两件不同的事情。PHP通常作为服务器端应用程序运行,因此具有特定的错误日志结构。Python可以运行任何类型的应用程序,并且可以同时运行多个实例——因此,在这种情况下,您提出的问题实际上没有意义。然而,你仍然可以实现你的愿望

尽管您可以直接从cron作业“>/path/to/log.txt”将输出通过管道传输到stderr,但要获得更详细的信息,请使用pythons libary——标准库的一部分。但就我个人而言,我更喜欢——它为日志库提供了一个很好的包装

所以

  • 使用标准库或pygogo向Python添加一些日志记录
  • 使用“>”或“tee”将cron作业的输出通过管道传输到日志文件
  • 使用“tail-f/path/to/my/log.txt”实时查看日志
  • 我经常这样做,很有魅力