router.route('/')
.get((req, res) => {
// Просмотр какого нибудь списка
})
router.route('/:element')
.get((req, res) => {
// Просмотр элемента списка
})
.put((req, res) => {
// Обновление элемента списка
})
.delete((req, res) => {
// Удаление элемента списка
})
router.route('/add')
.get((req, res) => {
// Страница добавление элемента в список
})
.post((req, res) => {
// Добавление элемента в список
})
router.route('/add')
это create
, а router.route('/:element')
это read
, update
и delete
а тут руководство для создания нескольких логгеров.Это не позволяет работать с пользовательскими уровнями...
//// ОБЕРТКА ДЛЯ ЛОГГЕРА WINSTON
//// ПОДКЮЧАЕМЫЕ МОДУЛИ
var path = require('path');
var winston = require('winston');
var config = require('../config').get();
//// ПОДКЛЮЧАЕМЫЕ РАСШИРЕНИЯ ДЛЯ WINSTON
// Для записи логов в mongodb
require('winston-mongodb');
// Для записи логов в файлы по дням
require('winston-daily-rotate-file');
//// ПУТИ К ФАЙЛАМ ЛОГОВ
// Единый файл логирования
var applogFile = path.join(__dirname,'logs','app.log');
// Путь к файлам логов по дням
var appLogFilesPath = path.join(__dirname,'logs','/');
//// ЛОГИРОВАНИЕ ПРИЛОЖЕНИЯ
var appLog = new winston.Logger({
level : 'debug',
transports : [
new winston.transports.Console({
label : 'app',
colorize: true,
timestamp : true,
}),
new winston.transports.File({
filename : applogFile
})
]
});
//// ЛОГИРОВАНИЯ ПРИЛОЖЕНИЯ ПО ДНЯМ (ЕСЛИ НАДО)
var altAppLog = new winston.Logger({
level : 'debug',
transports : [
new winston.transports.Console({
colorize: true,
label : 'app',
timestamp : true,
}),
new winston.transports.DailyRotateFile({
filename : './log',
datePattern : `${appLogFilesPath}dd-MM-yyyy.`,
prepend : true,
maxDays : 90
})
]
});
//// ПОЛЬЗОВАТЕЛЬСКИЕ УРОВНИ И ЦВЕТА
var usersLog = {
levels: {
delete: 0,
update: 1,
create: 2,
read: 3,
logout: 4,
login: 5
},
colors: {
delete: 'red',
update: 'yellow',
create: 'green',
read: 'silver',
logout: 'purple',
login: 'blue'
}
};
// Даем винстону знать о пользовательских цветах
winston.addColors(usersLog.colors);
//// ЛОГИРОВАНИЕ ДЕЙСТВИЙ ПОЛЬЗОВАТЕЛЕЙ В БАЗУ ДАННЫХ
var userLog = new winston.Logger({
// Указываем пользовательские уровни
levels: usersLog.levels,
// Указываем с какого уровня логировать (обязательно, не будет работать без этого)
level : 'login',
transports : [
new winston.transports.Console({
label : 'user',
colorize: true,
timestamp : true,
}),
new winston.transports.MongoDB({
level : 'login',
db : `mongodb://${config.db.host}:${config.db.port}/${config.db.name}`,
collection: 'logs',
storeHost: true
})
]
});
module.exports = {
app : appLog,
alt : altAppLog,
user : userLog,
};
var log = require('./logs');
// Так запись в файл и отображение в консоли уровня info
log.app.info('Текст сообщения')
// Так запись в файл по дням и отображение в консоли уровня info
log.alt.info('Текст сообщения');
// Так запись в бд и отображение в консоли уровня login
log.user.login('Текст сообщения')
к примеру
/user/5af2fe6cc7a7631ae040db43
выполняется в Express маршрут/user/:userId
, в БД хранится информация о странице (заголовок, описание и т.п.), для того что бы получить эту информацию сначала выполняетсяmiddleware
который выбирает эти данные из БД и подставляет к примеру вres.locals.title
, но в БД не хранится информация о динамических маршрутах (/user/5af2fe6cc7a7631ae040db43
), а хранится информация о маршруте с параметром (/user/:userId
), для того что бы найти в БД информацию о маршруте, преобразуется из/user/5af2fe6cc7a7631ae040db43
в/user/:
, и по этому преобразованию выполняется поиск соответствующей записи в БД...