LogDNA меняет правила игры. Предложение 50 ГБ с двухдневным хранением в простом в использовании интерфейсе — это глоток свежего воздуха. До этого я пользовался известными сервисами облачного логирования — Papertrail и Loggly, но их высокая стоимость по сравнению с моими простыми приложениями не была чем-то, на что я хотел покупаться. До выхода LogDNA я придерживался логирования на основе локальных файлов! LogDNA недавно выпустила свою библиотеку NodeJS (17 дней назад на момент написания статьи) со встроенной интеграцией Winston, поэтому я сразу же интегрировал ее в свою существующую систему ведения журналов, и с миром снова все хорошо.

Для начала давайте установим наши зависимости:

npm install —-save winston logdna

Теперь в новом файле — я обычно помещаю эти файлы в папку с именем utils— utils/logger.js:

‘use strict’;
const winston = require(‘winston’);
// This will expose winston.transports.Logdna
require(‘logdna’).WinstonTransport;
const logger = new winston.Logger({
  transports: [
    new winston.transports.File({
      level: 'info',
      filename: '/var/logs/logs.log',
      handleExceptions: true,
      json: true,
      maxsize: 5242880,
      maxFiles: 10,
      colorize: false
    }),
    new winston.transports.Console({
      level: 'debug',
      handleExceptions: true,
      json: false,
      colorize: true
    }),
    new winston.transports.Logdna({
      key: <apikey>,
      hostname: <hostname>,
      ip: <ipAddress>,
      mac: <macAddress>,
      app: <appName>
    })
  ],
  exitOnError: false
});

module.exports = logger;

Мы будем иметь дело с третьим типом транспорта, который занимается отправкой ваших журналов в LogDNA —

  1. key: ключ API, используемый для доступа к вашему аккаунту. Вы можете получить ключ, войдя в свою учетную запись LogDNA и перейдя в «Настройки» > «Профиль учетной записи».
  2. hostname: имя, которое вы хотели бы использовать для своего сервера. Если вы хотите придерживаться имени хоста вашего сервера по умолчанию, вы можете использовать встроенный в Node модуль ОС, чтобы получить его с помощью os.hostname().
  3. ip: Довольно понятно. Это IP-адрес вашего сервера. Опять же, вы можете получить эту информацию с помощью os.networkInterfaces(). Ваш IP-адрес будет указан в массиве eth0.
  4. mac: это физический адрес вашего сетевого интерфейса, который, если вы используете os.networkInterfaces(), будет указан в массиве eth0 рядом с IP-адрес.
  5. приложение. И последнее, но не менее важное: это имя, по которому вы хотите идентифицировать свое приложение.

Итак, теперь, где бы вы ни использовали модуль регистратора, одна его копия будет храниться в локальном файле журнала, копия распечатана на вашей консоли и, наконец, еще одна копия будет отправлена ​​​​в вашу учетную запись LogDNA.

Например:

‘use strict’;
const http = require(‘http’);
const logger = require(‘./utils/logger’);
const server = http.createServer((request, response) => {
  res.end();
});
server.listen(3000, () => {
  logger.info(‘Server listening on port 3000’);
});

Получайте удовольствие от регистрации!