Отсутствие журналов и задержка в журналах при использовании BlobStorageRotatingFileHandler - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть API-интерфейс флакона, размещенный в Azure, и я использую пакет azure_storage_logging.handlers для отправки журналов времени выполнения API в хранилище Azure.Я использую BlobStorageRotatingFileHandler для этого.Я получаю несколько журналов в моей учетной записи хранения.Однако огромное количество бревен отсутствует.Мой API очень загружает процессор.Пожалуйста, дайте мне знать, как решить эту проблему.

def fun_logging(id, logfilename , loggername):
    mystorageaccountname = STORAGE_ACCOUNT_NAME
    mystorageaccountkey = STORAGE_ACCOUNT_KEY
    mystoragecontainer = STORAGE_CONTAINER
    utctime = asctime(gmtime())    
    logger = logging.getLogger(loggername)
    logger.setLevel(logging.DEBUG)

    log_formater = logging.Formatter('%(utctime)s - %(id)s  - %(levelname)s - %(message)s')
    azure_blob_handler = BlobStorageRotatingFileHandler(filename = logfilename, account_name=mystorageaccountname,account_key=mystorageaccountkey, delay=False, maxBytes= 10000,container=mystoragecontainer)
    azure_blob_handler.setLevel(logging.DEBUG)
    azure_blob_handler.setFormatter(log_formater)
    if (logger.hasHandlers()):
        logger.handlers.clear()
    logger.addHandler(azure_blob_handler)
    logger = logging.LoggerAdapter(logger, {'id': id, 'utctime':utctime})
    return logger

####### Calling function
logger = fun_logging(id, 'Logs//xyz.log', 'xyz')
logger.info(Result.log) ## the variable I am logging

1 Ответ

0 голосов
/ 23 ноября 2018

Я искал BlobStorageRotatingFileHandler, который вы использовали, и нашел репозиторий github michiya/azure-storage-logging. Я не уверен, было ли это использовано в вашем проекте колбы. Если да, я советую вам использовать TableStorageHandler для входа в ваш сценарий для записи огромного количества журналов, не используя BlobStorageRotatingFileHandler.

После того, как я рассмотрел код этого репо, возникает проблема с использованием BlockBlob для однократного сохранения всего файла журнала, а не для добавления записи журнала в AppendBlob. Так что это не подходит для вашего сценария с массивными журналами. А Azure рекомендует использовать AppendBlob для ведения журналов, см. Ниже: здесь при использовании хранилища BLOB-объектов.

Добавить блобы используются для ведения журнала, например, когда вы хотите записать в файл, а затем продолжать добавлять больше информации. Большинство объектов хранятся в Хранение BLOB-объектов - это блочные BLOB-объекты.

Таким образом, вы можете попробовать добавить приложение Blob через Azure Blob Storage SDK для Python, чтобы самостоятельно обернуть API ведения журнала. В противном случае хранилище таблиц Azure является хорошим выбором, который вы можете использовать для регистрации. Для записи больших журналов рекомендуется записывать журналы в EventHubs, а затем использовать другие службы, такие как Stream Analysis, для фильтрации и передачи данных в хранилище BLOB-объектов.

Надеюсь, это поможет.

...