Python - 使用定义和env.hosts创建结构日志文件

时间:2013-04-24 21:29:03

标签: python logging concatenation fabric

一直试图解决这个问题,但似乎无法使其发挥作用。我想创建一个看起来像$ HOSTNAME-timestamp的日志文件。例如,我有这个:

def test_servers():
    env.user = getpass.getuser()
    env.hosts = ['servernumber1', 'servernumber2']


def logname():
        timestamp = time.strftime("%b_%d_%Y_%H:%M:%S")
        'env.hosts' + timestamp

def audit():
        name = logname()
        sys.stdout = open('/home/path/to/audit/directory/%s' % name, 'w')
        run('hostname -i')
        print 'Checking the uptime of: ', env.host
        if run('uptime') < '0':
                print(red("it worked for less"))
        elif run('uptime') > '0':
                print(green("it worked for greater"))
        else:
                print "WTF?!"

当我在fabfile.py上运行fabric来执行“audit”时,它工作得很好,但是它没有在文件开头创建带有附加主机名的日志文件。它确实为test_servers中定义的每个主机创建了一个带有时间戳的日志文件。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

看起来env.hosts不能在函数中定义,只有env.host_string可以。

所以我猜你可能会收到一些错误消息:

No hosts found. Please specify (single) host string for connection: