我使用Python的日志模块将一些调试字符串记录到一个工作得很好的文件中。另外,我还想使用这个模块将字符串打印到stdout。我怎么做呢?为了将我的字符串记录到文件中,我使用以下代码:

import logging
import logging.handlers
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(
    LOGFILE, maxBytes=(1048576*5), backupCount=7
)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)

然后调用记录器函数

logger.debug("I am written to the file")

谢谢你的帮助!

在Python的sys.stdout解释器中默认启用输出缓冲吗?

如果答案是肯定的,那么有哪些方法可以禁用它?

目前的建议:

使用-u命令行开关 包装系统。每次写入后刷新的对象中的标准输出 设置PYTHONUNBUFFERED env变量 sys。Stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

是否有其他方法在sys/sys中设置全局标志。在执行期间以编程方式Stdout ?


如果只是想在使用打印的特定写入之后刷新,请参阅如何刷新打印函数的输出?。

我想将流程的标准输出和标准错误重定向到单个文件。我在巴什怎么做?

我有一个程序,将信息写入标准输出和标准错误,我需要用grep处理标准错误,把标准错误放在一边。

使用临时文件,可以分两步完成:

command > /dev/null 2> temp.file
grep 'something' temp.file

但是,在没有临时文件的情况下,如何使用一个命令和管道实现这一点呢?

在bash中,调用foo将在stdout上显示该命令的任何输出。

调用foo>output会将该命令的任何输出重定向到指定的文件(在本例中为“output”)。

是否有方法将输出重定向到文件并将其显示在stdout上?

要将标准输出重定向到Bash中的截断文件,我知道要使用:

cmd > file.txt

要重定向Bash中的标准输出,将其附加到文件,我知道要使用:

cmd >> file.txt

要将标准输出和标准错误重定向到截断的文件,我知道可以使用:

cmd &> file.txt

如何将标准输出和标准错误附加重定向到文件?cmd&>>file.txt对我不起作用。