Node.js Регистрация
Есть ли какая-нибудь библиотека, которая поможет мне обрабатывать ведение журнала в моем приложении Node.Js? Все, что я хочу сделать, это то, что я хочу записать все журналы в файл, а также мне нужны такие параметры, как выкатывание файла после определенного размера или даты.
Я включил log4js im, пытаясь сохранить все детали конфигурации в одном файле и использовать только методы в других файлах приложений для удобства обслуживания. Но он не работает должным образом. Вот что я пытаюсь сделать
var log4js = require('log4js');
log4js.clearAppenders()
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('test.log'), 'test');
var logger = log4js.getLogger('test');
logger.setLevel('ERROR');
var traceLogger = function (message) {
logger.trace('message');
};
var errorLogger = function (message) {
logger.trace(message);
};
exports.trace = traceLogger;
exports.error = errorLogger;
Я включил этот файл в другие файлы и попробовал
log.error ("Hello Error Message");
Но он не работает. В этом что-то не так?
Ответы
Ответ 1
Winston - довольно хорошая библиотека протоколирования. Вы можете записывать журналы в файл, используя его.
Код выглядит примерно так:
var winston = require('winston');
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({ json: false, timestamp: true }),
new winston.transports.File({ filename: __dirname + '/debug.log', json: false })
],
exceptionHandlers: [
new (winston.transports.Console)({ json: false, timestamp: true }),
new winston.transports.File({ filename: __dirname + '/exceptions.log', json: false })
],
exitOnError: false
});
module.exports = logger;
Затем вы можете использовать это как:
var logger = require('./log');
logger.info('log to file');
Ответ 2
Scribe.JS Легкий регистратор
Я просмотрел много журналов, и мне не удалось найти легкое решение, поэтому я решил сделать простое решение, размещенное на github.
- Сохраняет файл, который организован пользователем, датой и уровнем.
- Дает вам хороший результат (мы все это любим)
- Простой в использовании интерфейс HTML
Надеюсь, это поможет вам.
Онлайн-демонстрация
http://bluejamesbond.github.io/Scribe.js/
Защищенный веб-доступ к журналам
![A]()
Печатает до мелочей текст на консоль!
![A]()
Веб-доступ
![A]()
Github
https://github.com/bluejamesbond/Scribe.js
Ответ 3
Log4js является одной из самых популярных библиотек журналов для приложения nodejs.
Он поддерживает множество интересных функций:
- Цветная ведение журнала консоли
- Замена функций node console.log(необязательно)
- File appender, с кадрированием журнала на основе размера файла
- SMTP, GELF, hook.io, Loggly appender
- Многопроцессорный appender (полезно, когда у вас есть рабочие процессы)
- Регистратор для серверов подключения/экспресс-доставки
- Конфигурируемый макет/шаблоны сообщений журнала
- Различные уровни журналов для разных категорий журналов (сделайте некоторые части
вашего журнала приложений как DEBUG, другие - только ОШИБКИ и т.д.).
Пример:
-
Установка: npm install log4js
-
Конфигурация (./config/log4js.json
):
{"appenders": [
{
"type": "console",
"layout": {
"type": "pattern",
"pattern": "%m"
},
"category": "app"
},{
"category": "test-file-appender",
"type": "file",
"filename": "log_file.log",
"maxLogSize": 10240,
"backups": 3,
"layout": {
"type": "pattern",
"pattern": "%d{dd/MM hh:mm} %-5p %m"
}
}
],
"replaceConsole": true }
-
Использование:
var log4js = require( "log4js" );
log4js.configure( "./config/log4js.json" );
var logger = log4js.getLogger( "test-file-appender" );
// log4js.getLogger("app") will return logger that prints log to the console
logger.debug("Hello log4js");// store log in file
Ответ 4
Вы также можете использовать npmlog с помощью issacs, рекомендованного в
https://npmjs.org/doc/coding-style.html.
Вы можете найти этот модуль здесь
https://github.com/isaacs/npmlog
Ответ 5
"logger.setLevel(" ОШИБКА "); вызывает проблему. Я не понимаю, почему, но когда я устанавливаю его на что угодно, кроме" ВСЕ", в файле ничего не печатается. Я немного толкнул и изменил код. Он отлично работает для меня. Я создал два файла.
logger.js
var log4js = require('log4js');
log4js.clearAppenders()
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('test.log'), 'test');
var logger = log4js.getLogger('test');
logger.setLevel('ERROR');
var getLogger = function() {
return logger;
};
exports.logger = getLogger();
logger.test.js
var logger = require('./logger.js')
var log = logger.logger;
log.error("ERROR message");
log.trace("TRACE message");
Когда я запускаю "node logger.test.js", я вижу только сообщение "ERROR" в файле test.log. Если я изменю уровень на "TRACE", то обе строки будут напечатаны на test.log.
Ответ 6
Модуль "nodejslogger" может использоваться для простого ведения журнала. Он имеет три уровня регистрации (INFO, ERROR, DEBUG)
var logger = require('nodejslogger')
logger.init({"file":"output-file", "mode":"DIE"})
D: Отладка, I: Информация, E: Ошибка
logger.debug("Debug logs")
logger.info("Info logs")
logger.error("Error logs")
Доступ к модулю можно получить по адресу: https://www.npmjs.com/package/nodejslogger
Ответ 7
Обратите внимание, что errorLogger является оберткой вокруг logger.trace. Но уровень регистратора ОШИБКА, поэтому logger.trace не будет записывать свое сообщение в регистратор.
Исправление состоит в изменении logger.trace на logger.error в теле errorLogger.
Ответ 8
Winston - сильный выбор для большинства разработчиков. Я давно использую winston. Недавно я использовал winston с papertrail, который переводит приложение на следующий уровень.
Вот хороший скриншот со своего сайта.
![введите описание изображения здесь]()
Как его полезно
-
вы можете управлять журналами из разных систем в одном месте. это может быть очень полезно, когда у вас есть два бэкэнд-сообщения и вы можете видеть журналы с обоих на месте.
-
Журналы живут. вы можете просматривать журналы в реальном времени на своем производственном сервере.
-
Мощный поиск и фильтр
-
вы можете создавать оповещения для отправки электронной почты, если она встречает определенный текст в журнале.
и вы можете найти более http://help.papertrailapp.com/kb/how-it-works/event-viewer/
Простая конфигурация с использованием winston
, winston-express
и winston-papertrail
node модули.
import winston from 'winston';
import expressWinston from 'express-winston';
//
// Requiring `winston-papertrail` will expose
// `winston.transports.Papertrail`
//
require('winston-papertrail').Papertrail;
// create winston transport for Papertrail
var winstonPapertrail = new winston.transports.Papertrail({
host: 'logsX.papertrailapp.com',
port: XXXXX
});
app.use(expressWinston.logger({
transports: [winstonPapertrail],
meta: true, // optional: control whether you want to log the meta data about the request (default to true)
msg: "HTTP {{req.method}} {{req.url}}", // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}"
expressFormat: true, // Use the default Express/morgan request formatting. Enabling this will override any msg if true. Will only output colors with colorize set to true
colorize: true, // Color the text and status code, using the Express/morgan color palette (text: gray, status: default green, 3XX cyan, 4XX yellow, 5XX red).
ignoreRoute: function (req, res) { return false; } // optional: allows to skip some log messages based on request and/or response
}));
Я надеюсь, что это поможет кому-то управлять своими журналами!