如何将 abseil 日志消息重定向到 stout 而不是 stderr?
How to redirect abseil logging messages to stout instead of stderr?
我正在使用 python
3.7.6
。和用于记录消息 with absl-py
0.9.0
的下降模块。我正在使用这段代码进行测试。
from absl import logging
from absl import app
def main(argv):
#logging.set_stderrthreshold(logging.ERROR)
#logging._warn_preinit_stderr = False
logging.set_verbosity(logging.DEBUG)
print(' 0 -----')
logging.debug(' 1 logging-debug-test')
logging.info(' 2 logging-info-test')
logging.warning(' 3 logging-warning-test')
logging.error('4 logging-error-test')
print(' 5 -----')
if __name__ == '__main__':
app.run(main)
在Jupyter notebook
中测试它时,从背景的颜色代码可以清楚地看出绳降消息在标准错误流中。
在 shell 中执行 python 代码时同样如此:
我尝试了一些具有不同值的东西,例如:
logging.set_stderrthreshold(logging.DEBUG)
logging._warn_preinit_stderr = True
但我仍然看到 100% 相同的输出。
- 如何将输出的绳降日志消息重定向到 stdout 而不是 stderr ?
- 是否希望将日志输出消息重定向到 stderr 而不是 stdout?我可能遗漏了一些日志逻辑,我想更好地理解它。
有人告诉我这是标准行为,也是 Python 的标准日志记录模块的作用。在我的例子中,添加以下行将日志消息重定向到标准输出:
logging.get_absl_handler().python_handler.stream = sys.stdout
现在在我的 Jupyter notebook 中它看起来像这样:
由于某些原因这对我不起作用:
from absl import logging
import sys
logging.get_absl_handler().python_handler.stream = sys.stdout
但这确实发生了:
import logging
import sys
logging.basicConfig(stream=sys.stdout)
我正在使用 python
3.7.6
。和用于记录消息 with absl-py
0.9.0
的下降模块。我正在使用这段代码进行测试。
from absl import logging
from absl import app
def main(argv):
#logging.set_stderrthreshold(logging.ERROR)
#logging._warn_preinit_stderr = False
logging.set_verbosity(logging.DEBUG)
print(' 0 -----')
logging.debug(' 1 logging-debug-test')
logging.info(' 2 logging-info-test')
logging.warning(' 3 logging-warning-test')
logging.error('4 logging-error-test')
print(' 5 -----')
if __name__ == '__main__':
app.run(main)
在Jupyter notebook
中测试它时,从背景的颜色代码可以清楚地看出绳降消息在标准错误流中。
在 shell 中执行 python 代码时同样如此:
我尝试了一些具有不同值的东西,例如:
logging.set_stderrthreshold(logging.DEBUG)
logging._warn_preinit_stderr = True
但我仍然看到 100% 相同的输出。
- 如何将输出的绳降日志消息重定向到 stdout 而不是 stderr ?
- 是否希望将日志输出消息重定向到 stderr 而不是 stdout?我可能遗漏了一些日志逻辑,我想更好地理解它。
有人告诉我这是标准行为,也是 Python 的标准日志记录模块的作用。在我的例子中,添加以下行将日志消息重定向到标准输出:
logging.get_absl_handler().python_handler.stream = sys.stdout
现在在我的 Jupyter notebook 中它看起来像这样:
由于某些原因这对我不起作用:
from absl import logging
import sys
logging.get_absl_handler().python_handler.stream = sys.stdout
但这确实发生了:
import logging
import sys
logging.basicConfig(stream=sys.stdout)