我想直接将Python日志文件写入S3,而不是先保存到标准输出(stdout)。我希望程序运行结束时,日志文件可以自动写入S3。我想使用boto3的put_object
方法:
我想直接将Python日志文件写入S3,而不是先保存到标准输出(stdout)。我希望程序运行结束时,日志文件可以自动写入S3。我想使用boto3的put_object
方法:
import atexit
import logging
import boto3
def write_logs(body, bucket, key):
s3 = boto3.client("s3")
s3.put_object(Body=body, Bucket=bucket, Key=key)
log = logging.getLogger("some_log_name")
log.info("Hello S3")
atexit.register(write_logs, body=log, bucket="bucket_name", key="key_name")
quit()
上传到S3时会出现错误。如果我没记错的话,它要求上传到S3的对象必须类似于字节。一旦我有时间重新创建这个问题,我将更新问题并提供确切的错误信息。
atexit
... TIL - Shadilog.addHandler(handler)
(没有self.
)。 - Shadilogging.basicConfig(level=logging.INFO)
将日志级别更改为info,否则log.info("Hello S3")不会输出任何内容。 - Tomking Chenlog_stringio.getvalue()
注册到atexit
时,它对我没有起作用。因此我只是注册了log_stringio
,然后在write_log
函数中调用get_value()
方法 ->s3.put_object(Body=body.getvalue(), Bucket=bucket, Key=key)
。 - hru_d