python logging日志配置,如何不输出到控制台

我的日志配置如下,运行时自动输出到控制台,用nohup挂起,相应的输出也会输出nohup.out
同时my.log也会有正确的日志输出
my.log的日志输出格式是正确的,输出到控制台的日志和ide(pychram)调试时产生的日志一样

logHandler = TimedRotatingFileHandler("logs/my.log", when="midnight")
logFormatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
logHandler.setFormatter(logFormatter)
logger = logging.getLogger('myapp')
logger.addHandler(logHandler)
logger.setLevel(logging.INFO)

具体应该怎么修改?

阅读 9.6k
1 个回答

无需改python代码,修改一下启动脚本更好,可以将输出定义到/dev/null。如下:

#!/usr/bin/env bash

nohup 你的执行命令 > /dev/null 2>&1 &

详细解释:
> /dev/null 就是把标准输出流(代号是1)重定向到一个不存在的设备里,也就是直接丢弃。2>&1就是把标准错误流(代号是2)放到标准输出流(代号是1)里,也就是输出流是标准输出和标准错误混杂在一起。这样无论是标准输出还是标准错误都被丢弃了。最后一个& 是后台启动。

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