python - 不同的日志:local VS docker (local) vs docker SWARM
问题描述
经过一些特定步骤后,我在我的应用程序中记录了一些信息,这些是 3 种不同环境中的结果:
LOCAL
[2020-07-31 08:38:46 -0400] [4810] [INFO] validation
[2020-07-31 08:38:51 -0400] [4810] [INFO] valid
DOCKER LOCAL
[2020-07-30 20:38:55 +0000] [8] [INFO] validation
INFO:app.main:validation
[2020-07-30 20:38:59 +0000] [8] [INFO] valid
INFO:app.main:valid
DOCKER SWARM
[2020-07-27 14:13:08 +0000] [9] [INFO] validation
INFO:app.main:validation
[2020-07-27 14:13:08 +0000] [9] [INFO] valid
INFO:app.main:valid
[2020-07-27 14:13:09 +0000] [9] [INFO] validation
INFO:app.main:validation
[2020-07-27 14:13:09 +0000] [9] [INFO] valid
INFO:app.main:valid
如您所见,当我在本地环境中运行应用程序时,它会正确记录,但在 Docker 中时,它会复制所有内容。
Docker env 的交易是什么?
解决方案
从额外消息的格式来看,例如INFO:app.main:validation
,它看起来好像logging.basicConfig()
在 Docker 环境中调用了某些东西。这可能是显式的,也可能是通过对 eglogging.info()
或类似的调用而隐式的。这是使用 REPL 的示例:
$ python3
Python 3.7.3 (default, Dec 20 2019, 18:57:59)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import logging
>>> logging.basicConfig(level=logging.INFO)
>>> logging.getLogger('app.main').info('validation')
INFO:app.main:validation
>>>
所以,在你的代码中寻找一个调用,logging.info()
或者一个logging.basicConfig()
只有在 Dockerized 时才会发生的调用。
推荐阅读
- c# - c#算法来计算从总金额中减去每个购买项目的折扣
- docker - docker 复制问题并设置主机环境变量
- delphi - Delphi Indy 10 HTTP 客户端与 .NET IIS 应用程序的奇怪行为
- sql - VBA/SQL 问题访问
- python - Django Rest Framework 是否有第三方应用程序可以自动生成 swagger.yaml 文件?
- java - 如何在头部更改应用程序字幕
- java - 我将如何在 SQL 中检查所有行的一列的所有值是否使用 Java 相同?
- javascript - 模式不会在 ajax 成功时关闭,也不会显示成功消息
- maxima - wxMaxima - 解决/重新排列包含某些变量的术语
- python - 对函数的缓慢 numpy 评估