Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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/scala/21.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输出重定向到日志文件_Python_Variables_Output - Fatal编程技术网

将python输出重定向到日志文件

将python输出重定向到日志文件,python,variables,output,Python,Variables,Output,我有一个简单的要求。我有一个包含变量列表的python文件。我想执行python文件并将其输出写入日志文件。做这件事的简单方法是什么? 例子: var.py具有以下代码 x = (10,11,12) y = str("case when id =1 then gr8 else ok end") z = datetime.datatime.today().strftime('%Y-%m-%d') 我希望日志以相同的顺序显示变量的分辨率 x = (10,11,12) y = 'case when

我有一个简单的要求。我有一个包含变量列表的python文件。我想执行python文件并将其输出写入日志文件。做这件事的简单方法是什么? 例子: var.py具有以下代码

x = (10,11,12)
y = str("case when id =1 then gr8 else ok end")
z = datetime.datatime.today().strftime('%Y-%m-%d')
我希望日志以相同的顺序显示变量的分辨率

x = (10,11,12)
y = 'case when id =1 then gr8 else ok end'
z = 2016-06-07
如何在python中实现这一点

这就是我试过的

# In:
import logging

# set root logger level
root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG)

# setup custom logger
logger = logging.getLogger(__name__)
handler = logging.FileHandler('example.log')
handler.setLevel(logging.INFO)
logger.addHandler(handler)

# log
x = (10,11,12)
y = str("case when id =1 then gr8 else ok end")
logger.debug(x)
logger.debug(y)
example.log文件为空

使用Python很容易

您可以手动打开、写入和关闭文件,即:

text_file = open("OutputFile.txt", "w")
text_file.write("Write blablabla into a file")
text_file.close()
或者使用上下文管理器(文件会自动关闭),即:

这通常是一种更好的编码实践

在您的示例中:

import datetime

x = (10,11,12)
y = str("case when id =1 then gr8 else ok end")
z = datetime.datetime.today().strftime('%Y-%m-%d')

outfile = 'outputfile.txt'

with open(outfile, 'w') as f:
    f.write(str(x))
    f.write("\n")
    f.write(y)
    f.write("\n")
    f.write(z)
    f.write("\n")
在脚本文件夹中生成名为
outputfile.txt
的文件,其中包含以下行:

(10, 11, 12)
case when id =1 then gr8 else ok end
2016-06-07
但是,如果您想要一个特定于日志记录的库,您可以查看

这将产生以下输出:

2016-06-07 15:28:12.874 INFO (10, 11, 12)
2016-06-07 15:28:12.874 INFO case when id =1 then gr8 else ok end
2016-06-07 15:28:12.874 INFO 2016-06-07

使用python记录器功能


没有一种明确的方法可以做到这一点,但是您可以使用Python的内置日志模块jerry rig一些东西,我希望输出也包括变量名。示例z=2016-06-07操纵对象。在string对象.logging.debug(“x=“+str(x))之前假装字符串。我尝试了以下代码。但是我看到example.log是空的,我不完全理解日志模型。但我看到的是,当我从IPython笔记本执行时,我看到文件夹中的日志文件,但它是空的。我看到logger对象已创建,但不确定实际的日志文件。你能在IPython中尝试这个吗?在IPython中尝试了这个代码。我在python文件夹中没有看到log file.log文件?是否需要添加任何特定的处理程序来生成日志文件?谢谢
import datetime, logging

logfile = 'logfile.log'

logging.basicConfig(filename=logfile, 
                    level=logging.INFO,
                    format='%(asctime)s.%(msecs)03d %(levelname)s %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')

x = (10,11,12)
y = str("case when id =1 then gr8 else ok end")
z = datetime.datetime.today().strftime('%Y-%m-%d')

logging.info(x)
logging.info(y)
logging.info(z)
2016-06-07 15:28:12.874 INFO (10, 11, 12)
2016-06-07 15:28:12.874 INFO case when id =1 then gr8 else ok end
2016-06-07 15:28:12.874 INFO 2016-06-07
import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)
x = (10,11,12)
y = str("case when id =1 then gr8 else ok end")
logging.debug(x)
logging.debug(y)