如何解决有什么方法可以在 Python 的 Cloud Function 中格式化我的日志吗?
import logging
import google.cloud.logging
class LoggingClass:
@staticmethod
def _get_logging_level(level):
level = level.lower()
if level == 'debug':
logging_level = logging.DEBUG
elif level == 'info':
logging_level = logging.INFO
elif level == 'warning':
logging_level = logging.WARNING
elif level == 'error':
logging_level = logging.ERROR
elif level == 'critical':
logging_level = logging.CRITICAL
# Default logging level
else: logging_level = logging.INFO
return logging_level
@staticmethod
def setup_logging(level='INFO',mode='formatted'):
client = google.cloud.logging.Client()
client.get_default_handler()
cloud_logger = logging.getLogger('CloudLogging')
logging_level = LoggingClass._get_logging_level(level)
cloud_logger.setLevel(logging_level)
if mode == 'simple':
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
else:
formatter = logging.Formatter(
'%(process)d - %(thread)d - %(asctime)s - '
'%(name)s - %(levelname)s - %(message)s'
)
chl = logging.StreamHandler()
if cloud_logger.handlers:
cloud_logger.handlers.pop()
chl.setFormatter(formatter)
cloud_logger.addHandler(chl)
return cloud_logger
if __name__ == "__main__":
cloud_logger = LoggingClass.setup_logging(level='INFO')
cloud_logger.error("ok")
cloud_logger.warning("ok1")
cloud_logger.info("ok2")
我在 Cloud Function 日志上得到的输出是:
12828 - 3444 - 2021-02-01 18:57:26,451 - CloudLogging - ERROR - ok
ok
12828 - 3444 - 2021-02-01 18:57:26,451 - CloudLogging - WARNING - ok1
ok1
12828 - 3444 - 2021-02-01 18:57:26,451 - CloudLogging - INFO - ok2
ok2
有人可以纠正我哪里出错了吗?为什么重复?我只希望第一行以该格式登录 Cloud Function。如果我不使用谷歌云日志,我会看到日志中有明显的延迟。但是使用谷歌云日志,没有延迟,只有重复!
解决方法
我建议看看这篇文章:Python and Stackdriver Logging
据我所知,您会得到这样的结果,因为日志记录是异步发生的,并且是小批量的(幕后的另一个线程)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。