Log4JS является одним из лучших модулей в обработке журнала Node.js. По сравнению с консолью или отладкой TJ, следующие представлены для проектов node.js, которые помещаются в производство:
Эта статья даст вам всеобъемлющее введение в Log4JS, что позволяет вам легко использовать Log4JS в вашем проекте, легкостью разработки и отладки, а также для лучшего мониторинга или устранения неполадок в Интернете.
Небольшой тест
Следующие три строки кода показывают вам самое простое использование log4js:
// Файл: ostmest.jsvar log4js = require ('log4js'); var logger = log4js.getlogger (); logger.debug ("time:", new Date ());Calls .getLogger () может получить экземпляр Log4JS Logger. Использование этого случая такое же, как и у консоли. Вы можете позвонить .debug (также .info, .error и другие методы) в выходные журналы.
Запустите Node Simple.js, и выходной сигнал следующим образом:
$ node simple.js [2016-08-21 00: 01: 24.852] [Debug] [по умолчанию]-Время: 2016-08-20T16: 01: 24.852z
Время: 2016-08-20T16: 01: 24.852Z-это то, что мы хотим вывести. Предыдущий содержит Specifier [2016-08-21 00: 01: 24.852] [DEBUG] [по умолчанию] указан позже.
Разве это не очень просто в использовании? Что ж, прежде чем мы погрузимся в расширенное использование log4js, давайте сначала ознакомитесь с понятиями в log4js.
Уровень
Это не сложно понять, это оценка журналов. Только когда журналы являются иерархическими, могут log4js лучше показывать нам журналы (разные уровни журналов используют разные цвета в консоли, такие как ошибка, как правило, красная), а при производстве вы можете выборочно отскакивать журналы, например, избегать некоторой конфиденциальной информации, которая принадлежит .debugs протекает.
Журналы log4J разделены на девять уровней, а имена и веса каждого уровня следующие:
{All: новый уровень (number.min_value, «all»), трасса: новый уровень (5000, «трасса»), отладка: новый уровень (10000, «отладка»), информация: новый уровень (20000, «Информация»), предупреждение: новый уровень (30000, «Warn»), ошибка: новый уровень (40000, «ошибка»), Fatal: Fatal: New Level (50000, FAT »: FAT»: «Новый»: «Фат»), Marktal »:« Новый »), Martal»: «Фат»: «Фат»), «Новый»), «Новый»), «Новый»). Уровень (9007199254740992, "Mark"), // 2^53 OFF: новый уровень (number.max_value, "off")}Предыдущая картина:
Все эти два уровня не используются напрямую в бизнес -коде. Оставшиеся семь - это семь методов, соответствующих экземпляру logger, .trace .debug .info ... Другими словами, когда вы называете эти методы, это эквивалентно выравниванию этих журналов. Таким образом, предыдущий [2016-08-21 00: 01: 24.852] [DEBUG] [по умолчанию]-Время: 2016-08-20T16: 01: 24.852Z является уровнем этого журнала.
тип
Log4JS также имеет концепцию, называемую категорией (тип). Вы можете установить тип экземпляра регистрации и отличить журналы в соответствии с другим измерением:
// Файл: set-cateTory.jsvar log4js = require ('log4js'); var logger = log4js.getlogger ('Пример'); logger.debug ("time:", new Date ());При получении экземпляра регистратора через GetLogger единственный параметр, который может быть передан, - это loggerCategory (например, «Пример»). Этот параметр указывает, к какой категории принадлежит экземпляр Logger. Это то же самое, что и отладка TJ:
var Debug = require ('Debug') ('konaker'); setInterval (function () {debug ('выполнение какой -либо работы');}, 1000);В отладке «работник» это также классификация журналов. ОК, вернись и запустить узлы set-catetory.js:
[2016-08-21 01: 16: 00.212] [DEBUG] Пример-Время: 2016-08-20T17: 16: 00.212Z
Единственная разница в предыдущем [2016-08-21 00: 01: 24.852] [DEBUG] [по умолчанию]-Время: 2016-08-20T16: 01: 24.852Z-это то, что [по умолчанию] стало примером.
Каково использование категории? Он более гибкий, чем уровень и обеспечивает второе измерение различия для журналов. Например, вы можете установить различную категорию для каждого файла, например, в set-cattory.js:
// Файл: set-catetory.jsvar log4js = require ('log4js'); var logger = log4js.getlogger ('set-catetory.js'); logger.debug ("time:", new Date ());Вы можете увидеть из журнала [2016-08-21 01: 24: 07.332] [DEBUG] SET-CATETORY.JS-Время: 2016-08-20T17: 24: 07.331Z, что этот журнал поступает из файла SET-CATETORY.JS. Или используйте разные категории для разных пакетов узлов, чтобы вы могли отличить, от какого модуля происходит журнал.
Приложение
Что ж, теперь в журнале есть уровни и категории, которые решают проблему оценки и классификации журналов на входе. В log4js задача экспорта журнала (то есть, когда вывод журнала выводится) решается appender.
По умолчанию приложение
Ниже приведены настройки приложения по умолчанию для Log4JS Internal:
// log4js.jsdefaultconfig = {appenders: [{type: "console"}]}Как вы можете видеть, когда журналы не настроены каким -либо образом, журналы по умолчанию выводятся в консоль.
Установите свой собственный приложение
Мы можем установить приложение, которое мы хотим, через log4js.configure.
// Файл: custom-appender.jsvar log4js = require ('log4js'); log4js.configure ({adpenders: [{type: 'file', filename: 'default.log'}]}) var logger = log4js.getlogger ('custom-appender'); debug (",", ", new Date ('' custom-appender ');В приведенном выше примере мы выводим журнал в файл и запускаем код. Log4JS создает файл с именем default.log в текущем каталоге. [2016-08-21 08: 43: 21.272] [DEBUG] Custom-apperender-Время: 2016-08-21T00: 43: 21.272Z выводит его в файл.
Приложение, предоставленное Log4JS
Консоль и файл являются приложениями, предоставленными Log4JS, в дополнение к этому:
DateFile: журнал выводится в файл, а файл журнала можно прокрутить в определенном режиме даты, например, вывод в Default-2016-08-21.log сегодня, и вывод по умолчанию-2016-08-22.log завтра;
SMTP: выход вывода по электронной почте;
Mailgun: вывод журналов в Mailgun через API Mailgun;
Левелфильтер может быть отфильтрован через уровень;
И так далее, некоторые другие аппендеры, вы можете увидеть полный список здесь.
Фильтрация уровней и категорий
Мы можем настроить конфигурацию приложения и отфильтровать уровни и категории журнала:
// Файл: level-and-category.jsvar log4js = require ('log4js'); log4js.configure ({appenders: [{type: 'loglevelfilter', level: 'Debug', категория: 'Category1', appender: {type: 'file', filename: 'debug. log4js.getlogger ('Category1'); var logger2 = log4js.getlogger ('Category2'); logger1.debug («Время:», новая дата ()); logger1.trace («Время:», New Date ()); logger2.debug («Time:», New Date ());Запустите, добавьте журнал в default.log:
[2016-08-21 10: 08: 21.630] [DEBUG] Категория1-Время: 2016-08-21T02: 08: 21.629Z
Давайте посмотрим на код:
Используйте LogleVelfilter и уровень для фильтрации уровней журнала, и все журналы с весами, превышающими или равны отладки. Это также значение веса уровня журнала, упомянутого ранее;
Выберите категорию, чтобы вывести журналы через категорию. Журналы в соответствии с категорией 2 отфильтрованы. Конфигурация также принимает массив, такой как [Category1 ',' Category2 '], так что обе категории журналов будут выводиться в файл.
Макет
Макет - это расширенная функция, предоставленная Log4JS. Через макет мы можем настроить формат каждого выходного журнала. Log4JS имеет встроенные четыре типа форматов:
MessagePassThrough: только вывод содержимого журнала;
Основное: время, уровень журнала и категория будут добавлены перед содержимым журнала, и обычно добавляется макет журнала по умолчанию;
Цветный/окрашенный: добавьте цвет в журнал. На основе базового, консоль Appender использует этот макет по умолчанию;
Образец: Это особый тип, который можно использовать для определения любого формата, который вы хотите.
Пример шаблона:
// Файл: Mayout -pattern.jsvar log4js = require ('log4js'); log4js.configure ({adpenders: [{type: 'Консоль', макет: {type: 'pattern', pattern: '[%r] log4js.getlogger ('макет-pattern'); logger.debug ("time:", new Date ());%r %p $ m $ n является встроенным спецификатором для log4js. Вы можете использовать это для вывода мета -информации. Для получения более подробной информации вы можете обратиться к документации Log4JS.
Давайте объясним позиционирование регистрации, приложения и макета на картинке.
Практическая боевая сражение: доступ к выводу доступа к журналу доступа.
Чтобы облегчить проверку проблемы, журналы запросов приложений въезда и выхода часто регистрируются в производственных средах. Как реализовать его с помощью log4js? Просто введите код:
// Файл: server.jsvar log4js = require ('log4js'); var express = revise ('express'); log4js.configure ({appenders: [{type: 'datefile', filename: 'Access.log', шаблон: '-yyyy-mm-dd.log', всегда includepattern: truge, quater: Express (); App.use (log4js.connectlogger (log4js.getlogger ('access'), {level: log4js.levels.info})); app.get ('/', function (req, res) {res.send ('Комментарий иностранного журнала Front-End');}); app.listen (5000);Посмотрите, что мы сделали:
Приложение настроено для выбора журнала с доступом к категории из журнала и вывода его в файл прокрутки;
log4js.getlogger ('Access') получает экземпляр Logger с доступом к категории и передает его в промежуточное программное обеспечение Log4js.connectlogger. Это промежуточное программное обеспечение собирает информацию доступа и печатает ее через этот экземпляр.
Запустите сервер и посетите http: // localhost: 5000. Вы обнаружите, что в каталоге есть дополнительный файл с именем access.log-2016-08-21.log, который содержит два журнала:
[2016-08-21 14: 34: 04.752] [Info] Access - :: 1 - - "get/http/1.1" 200 18 "" "Mozilla/5.0 (Macintosh; Intel Mac OS x 10_11_0) AppleWebkit/537,36 (KHTML, как gecko) chrome/52.0.2743.11666" 337.36.36.36.36.36.36.36.
[2016-08-21 14: 34: 05.002] [Info] Access - :: 1 - - "get /favicon.ico http/1,1" 404 24 "http: // localhost: 5000/" "Mozilla/5.0 (Macintos Chrome/52.0.2743.116 Safari/537,36 "
Благодаря функции классификации и приложения журналов log4js мы выводим журналы доступа в обновленный файл прокрутки.
Суммировать
Эта статья всесторонне представляет использование log4js. По сравнению с консолью или простыми инструментами ведения журнала Log4JS более сложный в использовании и, конечно, более мощный, и он подходит для приложений на уровне производства. Если вы заинтересованы, пожалуйста, оставьте сообщение, чтобы сообщить нам. Далее вы можете представить вам, как управлять конфигурацией в приложениях узлов.