Структурированные журналы в Google Cloud Run не анализируются (для регистрации используется Winston) - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь отформатировать свои журналы таким образом, чтобы Google Cloud правильно извлек уровень журнала.Это работает на Cloud Run, с машинописью.Cloud Run получает журналы из вывода контейнера.

Если я сделаю следующее, Google правильно проанализирует строку журнала:

console.log(JSON.stringify({
   severity: 'ERROR',
   message: 'This is testing a structured log error for GCP'
}));

И вывод журнала будет выглядеть следующим образом: log level error

Я пробовал несколько разных способов форматирования с помощью winston, в итоге получилось следующее:

useFormat = format.combine(
      format((info, opts) => {
        info['severity'] = info.level;
        delete info.level;
        return info;
      })(),
      format.json());


    this.winston = winston.createLogger({
      level: logLevel,
      format: useFormat,
      transports: [new winston.transports.Console()]
    });

, который выглядит так, как будто он будет работать (правильновыводит строку json), я получаю это в журналах GCP: enter image description here

Любая помощь приветствуется.

1 Ответ

1 голос
/ 23 сентября 2019

Оказывается, я был близок, просто мне нужно было .upperCase () уровень журнала (и я отображаю Verbose -> Debug, я не очень понимаю, почему GCP решил сделать систему логирования совершенно другой, чем все остальные).).Новый код:

useFormat = 
    format.combine(
      format((info, opts) => {
        let level = info.level.toUpperCase();
          if(level === 'VERBOSE') {
            level = 'DEBUG';
          }

          info['severity'] = level;
          delete info.level;
          return info;
      })(),
      format.json());
...