как мне регистрировать сообщения, используя winston и паспортный сеанс - PullRequest
0 голосов
/ 25 апреля 2020

Я использую Winston Logger. Мне пришлось использовать https://www.npmjs.com/package/express-winston, потому что я хотел, чтобы объект req использовал user.id.

Я хочу создать файл журнала для каждого пользователя. Это B-to-B-приложение, и количество пользователей будет меньше, поэтому я уверен, что количество файлов не взорвется.

Это моя промежуточная реализация winston-


app.use((req, res, next) => {
  expressWinston.logger({
    // winstonInstance: global.logger,
    transports: [
      new winston.transports.Console(),
      //all logs
      new winston.transports.File({
        filename: `${logPath}/fapi-logs-${mmyyyy}.log`,
        format: winston.format.json(),
      }),
      //all logs per user
      new winston.transports.File({
        filename: `${logPath}/fapi-logs-${mmyyyy}-user-${req.session.user.id}.log`,
        format: winston.format.json(),
      }),
      //warnings - no data for keywords
      new winston.transports.File({
        level: "warn",
        filename: `${logPath}/fapi-warn-${mmyyyy}.log`,
        format: winston.format.json(),
      }),
      //warnings - no data for keywords
      new winston.transports.File({
        level: "debug",
        filename: `${logPath}/fapi-debug-${mmyyyy}.log`,
        format: winston.format.json(),
      }),
      //server errors
      new winston.transports.File({
        level: "error",
        filename: `${logPath}/fapi-error-${mmyyyy}.log`,
        format: winston.format.json(),
      }),
    ], //this is ignored as winstonInstance is provided
    format: winston.format.combine(
      winston.format.colorize(),
      winston.format.json(),
      winston.format.timestamp(),
      winston.format.prettyPrint()
    ),
    meta: true, // optional: control whether you want to log the meta data about the request (default to true)
    httpinfo:
      "HTTP userid-{{req.session}} | statusCode-{{res.statusCode}} | url-{{req.url}} | method-{{req.method}} | responseTime-{{res.responseTime}}ms", // 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
  });
  next();
});

Как мне войти в файлы? Я имею в виду, console.log не входит в файлы. Файлы создаются, но ничего не записывается в файл.

Я пытался использовать logger.info также в моих файлах маршрутов и других .js файлах, он выдал ошибку, говорящую logger is not defined.

Скажите, пожалуйста, что мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...