Морган регистратор неправильно записывает дату или время
Регистратор в моем приложении node.js неправильно записывает дату или время. Я использую Морган в качестве модуля регистрации и момент-часовой пояс, чтобы правильно записать дату и время в моем часовом поясе (тихоокеанское стандартное время). Вчера он записывал дату и время в соответствии с форматом, который я установил, но сегодня это не так.
Вот код для токена даты Моргана, использующего момент-часовой пояс:
morgan.token('date', (req, res, tz) => {
return moment().tz("America/Los_Angeles").format('YYYY-MM-DD, HH:mm a');
});
А вот код, в котором я использую маркер даты в morgan.format():
morgan.format('logFormat', '[:date[America/Los_Angeles]], :resource, :remote-addr, :status, :response-time ms');
Вчера мои запросы регистрировались в следующем формате:
[2018-07-31, 14:57 вечера], шумиха,::1, 401, 104,144 мс
Сегодня все регистрируется так:
[ГГГГ-ММ-ДД, ЧЧ: мм а], шутка,::1, 401, 45,995 мс
Единственное изменение, которое я сделал, - добавление новых маршрутов в приложение, но каждое промежуточное ПО для ведения журналов регистрирует отдельный файл в зависимости от используемого маршрута. Кто-нибудь знает, почему мой токен даты больше не отображает дату?
2 ответа
morgan.token('date'...
расстаться с MomentJS, регистрация часового пояса выглядит хорошо для меня!
Бьюсь об заклад, это синтаксическая ошибка в пользовательском формате токена. Если вам не нужно передавать параметр, в соответствии с документами Моргана, вы можете использовать собственные форматы токенов просто с точкой с запятой, например, так :date
, Поэтому попробуйте просто:
morgan.format('logFormat', ':date, :resource, :remote-addr, :status, :response-time ms');
Этот вопрос помогает мне решить мою проблему. Спасибо!
Это работает как раз для меня:
morgan.token('date', (req, res, tz) => {
return moment().tz(tz).format('YYYY-MM-DD HH:mm:ss');
})
morgan.format('myformat', :date[Asia/Taipei] | :method | :url | :response-time ms');
app.use(morgan('myformat'))