将正在运行的cmd输出保存到具有组合名称的txt文件

时间:2016-01-31 07:31:11

标签: python python-2.7 cloudfoundry

我正在尝试创建一个日志文件,该文件作为cmd中的尾部日志运行。 所以我只需要在完成后保存输出(用户点击输入),我无法弄清楚如何做到这一点..

这是我的代码

MS_log = the user's input

URL_logs = 'cf logs ' + MS_Log  +' >'+ MS_Log  + 'LOG.txt'
os.system(URL_log)

问题在于它会保存当前日志并且不允许我拖尾..

4 个答案:

答案 0 :(得分:0)

您似乎对写入日志文件并从中读取文件感到困惑。

首先,将您想要的内容写入文件:

# open the file in 'a' ("append") mode to add to it after its end
with open('LOG.txt', 'a') as f:
    f.write(MS_Log)

然后,以您想要的任何方式阅读日志文件,例如使用tail命令。请注意,读取不会来自同一个脚本!

答案 1 :(得分:0)

使用python编写登录文件的更好方法是使用logging模块,您也可以像这样指定文件:

import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

答案 2 :(得分:0)

执行此操作的一个好方法是使用python logging,它可以一次登录到多个位置 - 包括文件和标准输出。

import logging

logger = logging.getLogger(__name__)
file_handler = logging.FileHandler('/path/to/file')
stdout_handler = logging.StreamHandler()

logger.addHandler(file_handler)
logger.addHandler(stdout_handler)

logger.warning('This will be written to file and to stdout')

默认情况下,记录器仅记录warning及以上的消息。您可以将级别设置为较低以查看其他消息。

logger.setLevel(logging.DEBUG)
file_handler.setLevel(logging.DEBUG)
stdout_handler.setLevel(logging.DEBUG)

logger.debug('A debug message')

答案 3 :(得分:0)

cf CLI支持使用env var CF_TRACE文件的路径。

来自cf help:    CF_TRACE = path / to / trace.log将API请求诊断附加到日志文件

注意,这会填满你的磁盘:

将以下内容放在.bash_profile中 export CF_TRACE=path/to/trace.log

在另一个shell中,tail -f path/to/trace.log

现在您可以运行命令并同时查看跟踪。