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 —
- key: ключ API, используемый для доступа к вашему аккаунту. Вы можете получить ключ, войдя в свою учетную запись LogDNA и перейдя в «Настройки» > «Профиль учетной записи».
- hostname: имя, которое вы хотели бы использовать для своего сервера. Если вы хотите придерживаться имени хоста вашего сервера по умолчанию, вы можете использовать встроенный в Node модуль ОС, чтобы получить его с помощью os.hostname().
- ip: Довольно понятно. Это IP-адрес вашего сервера. Опять же, вы можете получить эту информацию с помощью os.networkInterfaces(). Ваш IP-адрес будет указан в массиве eth0.
- mac: это физический адрес вашего сетевого интерфейса, который, если вы используете os.networkInterfaces(), будет указан в массиве eth0 рядом с IP-адрес.
- приложение. И последнее, но не менее важное: это имя, по которому вы хотите идентифицировать свое приложение.
Итак, теперь, где бы вы ни использовали модуль регистратора, одна его копия будет храниться в локальном файле журнала, копия распечатана на вашей консоли и, наконец, еще одна копия будет отправлена в вашу учетную запись 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’); });
Получайте удовольствие от регистрации!