2016-06-24 3 views
1

Я использовал следующий код в гибком (VM) среды на Google App Engine, чтобы отделить пользовательские журналы с конкретными требованиями форматирования из других журналов приложений:Сырые Пользовательские Журналы в Google App Engine Flexible Environment

import logging as std_logging 

std_logging.basicConfig() 

custom_formatter = std_logging.Formatter('%(created)f\t%(message)s') 
custom_handler = std_logging.FileHandler('/var/log/app_engine/custom_logs/custom.log') 
custom_handler.setFormatter(custom_formatter) 
custom_logging = std_logging.getLogger('custom') 
custom_logging.addHandler(custom_handler) 

В обычной среде Python они записывали в файл журнала как строки в текстовом формате в указанном формате.

Однако после того, как вы сбросили журналы, созданные из App Engine в Cloud Storage, я заметил, что App Engine обернул каждый журнал другой информацией.

E.g. (Отформатирован для ясности)

{ 
    "insertId":"vsdacv1235jj1", 
    "log":"appengine.googleapis.com/custom.var.log.app_engine.app.custom_logs.custom.log", 
    "metadata":{ 
     "labels":{ 
      "appengine.googleapis.com/module_id":"default", 
      "appengine.googleapis.com/version_id":"1", 
      "compute.googleapis.com/resource_id":"1234256789901203", 
      "compute.googleapis.com/resource_name":"bbq23asd123", 
      "compute.googleapis.com/resource_type":"instance" 
     }, 
     "projectId":"my-project", 
     "serviceName":"appengine.googleapis.com", 
     "timestamp":"2016-06-24T20:16:15Z", 
     "zone":"us-central1-f" 
    }, 
    "textPayload":"1466799374933\tthis is my custom message" 
} 

Значение textPayload поля является фактическим журнал я произвел, но обернут App Engine.

Есть ли способ предотвратить такое поведение? Неправильно перерабатывать эти журналы, чтобы их правильно отформатировать.

ответ

0

Дополнительная информация на самом деле весьма удобна, особенно в среде appengine, где фильтрация по модулю/сервису, версии или экземпляру instance_id может действительно помочь вам разобраться в проблемах.

Если переработка журналов является вашей проблемой, я бы предложил turing на export to BigQuery functionality. Журналы будут постоянно передаваться в BigQuery и сразу же запрашиваться. Приятная вещь здесь - вы можете запросить только свойство text_payload и легко экспортировать только этот набор результатов в csv, text, json и т. Д.

Что касается экспорта только строк текста из журналов, я не считаю, что это возможное.

Смежные вопросы