我正在运行python脚本,我想记录python程序的每个步骤。
例如,假设我有一个程序def main()
if do:
do the work
if yes:
do the work
for list os.listdir(dir):
sys.system("python " + dirOfPython + " " + dirOflists)
我想记录我的程序在哪里......以及他们目前正在做什么。
在我的日志中,我想要类似
的内容Inside of main()
inside of if do:
doing work
inside of if yes:
doing work
inside of for each files/dirs calling list
calling sys.system python
executing python with give dir path
不完全是什么上面..但是某种日志来查看程序正在做什么以及如果它失败了这个日志将包含失败日志的错误信息
我只想要一个正式的日志文件
答案 0 :(得分:1)
你知道,有一个logging
模块!
import logging
import os
logging.basicConfig(filename='tmp.log',
format='%(levelname)s %(asctime)s :: %(message)s',
level=logging.DEBUG)
# format is a formatter string, level shows what level of logs it will record
# in this case it is everything!
# Levels are as follows from most to least critical
# CRITICAL
# ERROR
# WARNING
# INFO
# DEBUG
do = True
yes = True
do_the_work = lambda: None
def main():
logging.debug("Inside of main()")
if do:
logging.debug("Inside of if do:")
do_the_work()
logging.debug("doing work")
if yes:
logging.debug("inside of if yes:")
do_the_work()
logging.debug("doing work")
for list in os.listdir('.'): # there were three files in my folder
logging.debug("inside of for each files/dirs calling list")
print('python')
logging.debug("calling sys.system python")
logging.debug("executing python with give dir path")
这将产生以下输出:
DEBUG 2015-03-18 12:26:59,272 :: Inside of main()
DEBUG 2015-03-18 12:26:59,272 :: Inside of if do:
DEBUG 2015-03-18 12:26:59,272 :: doing work
DEBUG 2015-03-18 12:26:59,272 :: inside of if yes:
DEBUG 2015-03-18 12:26:59,272 :: doing work
DEBUG 2015-03-18 12:26:59,272 :: inside of for each files/dirs calling list
DEBUG 2015-03-18 12:26:59,272 :: calling sys.system python
DEBUG 2015-03-18 12:26:59,272 :: executing python with give dir path
DEBUG 2015-03-18 12:26:59,272 :: inside of for each files/dirs calling list
DEBUG 2015-03-18 12:26:59,272 :: calling sys.system python
DEBUG 2015-03-18 12:26:59,272 :: executing python with give dir path
DEBUG 2015-03-18 12:26:59,272 :: inside of for each files/dirs calling list
DEBUG 2015-03-18 12:26:59,272 :: calling sys.system python
DEBUG 2015-03-18 12:26:59,272 :: executing python with give dir path
您可以轻松捕获异常并让它们抛出更多重要事件。
try:
really_important_method()
except EndOfTheWorldError:
logging.critical("Duck and cover boys, it's gonna blow.")
答案 1 :(得分:0)
I think in program you need to know what is executing currently and what is the flow of the program and where it is breaking, this is where logs come into picture. For this you can use this pip library function-logger.
(INSTALLING) Install it with the following command:
pip install function-logger
(IMPORT STATEMENT) Inside your code import this library
from function_logger import function_logger
(USAGE) how to use Use it like the decorator on any function for which you want to see logs ex:
@function_logger(logger)
def log_function(name=None, age=None):
logger.debug("Inside log function")
return dict(bmi=19)
Output:
Inside Function log_function with parameters: (),{'name': 'hello', 'age': 23'}
Inside log function
Function: log_function returns 19