我使用BlobStorageRotatingFileHandler从databricks写入日志到Azure blob容器。我的代码有3个日志语句,我希望所有3被写入到一个文件,但每个语句被写入blob容器中的一个单独的文件。如何在一个文件中获得所有日志语句?
import logging
from azure_storage_logging.handlers import BlobStorageRotatingFileHandler
log = logging.getLogger('service_logger')
log.setLevel(logging.DEBUG)
azure_blob_handler = BlobStorageRotatingFileHandler(filename = "name.csv",account_name="xyz",account_key="&&&",maxBytes=5000,container="abc")
azure_blob_handler.setLevel(logging.DEBUG)
log.addHandler(azure_blob_handler)
log.info("Start processing file....")
log.info("Processsed file successfully")
log.info("End file successfully")
根据本文档,RotatingFileHandler
在日志内容未达到maxBytes时不上传日志,超过maxBytes时继续上传多个文件。
当这个文件被填满时,它被关闭并重命名为app.log。1、如果文件为app.log。1, app.log。2,等。
您面临此问题的另一个原因是blob的文件名以某种方式附加了时间戳(即日志上传的时间)。
您可以尝试的一个解决方案是,而不是使用BlobStorageRotatingFileHandler
,您可以尝试使用TableStorageHandler
,其中结果以以下格式显示。
tbody> <<tr> PartitionKey RowKey 时间戳 消息 XXXXX XXXXXXXXX YYYY-MM-DD YYYY-MM-DD XXXXX XXXXXXXXX YYYY-MM-DD YYYY-MM-DD XXXXX XXXXXXXXX YYYY-MM-DD YYYY-MM-DD