shell 脚本中如何获取 python logging 打印的信息?

在 shell 脚本中调用 python 的接口,但是 python API 是通过 python 的 logging 把相关信息打印到屏幕上的,不知道这种情况在 shell 中怎么获取这些 logging 信息,请指教。
代码中是这么写的:

import logging

......

logger = logging.getLogger("123")

......

def debug(msg):
    logger.setLevel(logging.DEBUG)
    debughandler = logging.StreamHandler()
    debughandler.setLevel(logging.DEBUG)
    fmt = '%(asctime)s - %(levelname)s - %(message)s'
    formatter = logging.Formatter(fmt)
    debughandler.setFormatter(formatter)
    logger.addHandler(debughandler)
    logger.debug(msg)
    logger.removeHandler(debughandler)

通过 logger.debug(msg) 打印的信息怎么在 shell 中捕捉到?

阅读 6.1k
1 个回答

思路:
logger模块里面有写入文件的方法,将log的内容写入一个文件,然后shell脚本读取log文件即可。

以下摘自: https://cuiqingcai.com/6080.html

import logging
 
logging.basicConfig(level=logging.DEBUG,
                    filename='output.log',
                    datefmt='%Y/%m/%d %H:%M:%S',
                    format='%(asctime)s - %(name)s - %(levelname)s - %(lineno)d - %(module)s - %(message)s')
logger = logging.getLogger(__name__)
 
logger.info('This is a log info')
logger.debug('Debugging')
logger.warning('Warning exists')
logger.info('Finish')

这里我们指定了输出文件的名称为 output.log,另外指定了日期的输出格式,其中年月日的格式变成了 %Y/%m/%d,另外输出的 format 格式增加了 lineno、module 这两个信息,运行之后便会生成一个 output.log 的文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏