gpt4 book ai didi

python - 管道 python 日志记录标准输出流输出到 grep

转载 作者:IT王子 更新时间:2023-10-29 01:26:14 24 4
gpt4 key购买 nike

我很久以前就知道这是为什么,但后来我忘记了,谷歌搜索了 5 分钟也没有找到答案。

我写了一个有两个处理程序的 python 脚本。一种用于文件,一种用于流。

一切如我所愿。

现在,我想快速 grep 查找正在打印到终端的输出中的某些内容,但是通过 grep 管道传输脚本的输出似乎不起作用,因为所有输出仍然打印到终端。

我正在使用 unix 和 python 2.7

这可能是一个重复的问题,但我找不到答案。

这是我的日志模块设置:

def setup_logger(verbosity):
#logger = logging.getLogger(regress.app_name)
logger = logging.getLogger('components')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler(Config.logging_file_name, mode='w')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel({True:logging.DEBUG, False:logging.INFO}[verbosity])
# create formatter and add it to the handlers
file_formatter = logging.Formatter('%(asctime)s - %(pathname)s - %(funcName)s - %(name)s - %(levelname)s - %(lineno)s - %(message)s')

console_formatter = logging.Formatter('%(filename)s - %(lineno)s - %(levelname)s - %(message)s')
fh.setFormatter(file_formatter)
ch.setFormatter(console_formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)

#logging.abort = abort
#logging.abort("testing...")
#logger.info("does this happen?")

#logging.func = func
#logging.func()
#logger.func()

我对脚本的调用如下所示:

<script_name> <script args> | grep -i <search_string>

最佳答案

正如@Blender 在原始问题下方的评论中提到的,您只需要重定向 stderr。您可以通过在管道之前添加 2>&1 重定向来实现。所以,例如,

python main.py 2>&1 | grep INFO

将过滤 main.py 记录的所有 INFO 行。

关于python - 管道 python 日志记录标准输出流输出到 grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33438595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com