Winston Logger — исключить ведение журнала в системный журнал для консольного транспорта

#node.js #winston

#node.js #winston

Вопрос:

У меня есть приложение узла, работающее на EC2 Redhat. Он ведет журнал в системный журнал, и журналы становятся слишком большими. Однако конфигурация не определила какой-либо транспорт системного журнала.

 const logger = createLogger({
  // change level if in dev environment versus production
  level: env === "development" ? "verbose" : "info",
  format: format.combine(
    format.timestamp({
      format: "YYYY-MM-DD HH:mm:ss",
    }),
    format.printf((info) => `${info.timestamp} ${info.level}: ${info.message}`)
  ),
  transports: [
    new transports.Console({
      level: "info",
      format: format.combine(
        format.colorize(),
        format.printf(
          (info) => `${info.timestamp} ${info.level}: ${info.message}`
        )
      ),
    }),
    dailyRotateFileTransport,
  ],
})
  

Есть ли способ отключить ведение журнала в системный журнал? В идеале из приложения node. Но если нет, то из самой конфигурации системного журнала.

Ответ №1:

Ваше приложение регистрируется на консоли. Я предполагаю, что приложение запускается не вручную, а через конфигурацию systemd и направляет stdout / stderr в journaldили куда угодно, куда он записывает выходные данные.

На самом деле это не вопрос Node / Winston. Вы можете либо изменить, куда ваше приложение регистрируется (переключиться на файловый транспорт с вращением журнала и прекратить сброс на консоль), уменьшить количество, которое вы регистрируете (фактически используйте debug и т. Д. Соответствующим Образом, Чтобы вывод не был слишком большим), либо взглянуть на то, как ваше приложение запускается впервое место и обдумайте это (вы хотите, чтобы systemd неуклюже передавал вам ведение журнала?)

Конечно, я предполагаю, что вы используете systemd, но консольный журнал не регистрируется в системном журнале, если выполнение приложения не направляет на него stdout / stderr, как это делает systemd.

Ответ №2:

Следующее, что я сделал, чтобы решить проблему с пространством на моем EC2.

Установите StandardOutput=null (ранее для него было установлено значение journaldпо умолчанию, а не из служебного файла), теперь для него установлено значение null.

введите описание изображения здесь

сервер — Избегайте регистрации системного блока (службы) в журнале — Спросите Ubuntu https://askubuntu.com/questions/1200680/avoid-systemd-unit-service-to-be-logged-in-journal

введите описание изображения здесь

linux — как отключить уведомления о запуске / остановке службы systemd — Unix и Linux Stack Exchange https://unix.stackexchange.com/questions/547790/how-to-disable-systemd-service-start-stop-notifications#comment1016825_547817