Winston: Файлы журнала не создаются

Созданный на 26 мая 2016  ·  27Комментарии  ·  Источник: winstonjs/winston

ОС: Ubuntu 14.04
NodeJS: 6.2.0
Уинстон: 2.2.0

Следующий код не создает файл журнала:

const logger = new Winston.Logger({
    level: 'verbose',
    transports: [
      new Winston.transports.Console({
        timestamp: true
      }),
      new Winston.transports.File({
        filename: 'app.log',
        timestamp: true
      })
    ]
  });

logger.info('Holla');

Он регистрирует в терминале штраф:

2016-05-26T13:11:49.927Z - info: Holla

Но файл журнала не создан.

Самый полезный комментарий

Я просто столкнулся с этой проблемой. Сначала должен существовать каталог. winston создаст для вас новые файлы, но не создает для вас новых каталогов (например, вам нужно создать каталог «журналов», если вы пытаетесь войти в файл, расположенный в logs / app.js)

Все 27 Комментарий

+1

+1

+1

+1

Кажется, проблема в узле 6 в fs.stat ()
По какой-то причине никогда не выполнялся обратный вызов fs.stat ()

    fs.stat(fullname, function (err, stats) {
      if (err) {
        if (err.code !== 'ENOENT') {
          return self.emit('error', err);
        }
        return createAndFlush(0);
      }

      if (!stats || (self.maxsize && stats.size >= self.maxsize)) {
        //
        // If `stats.size` is greater than the `maxsize` for
        // this instance then try again
        //
        return self._incFile(function() {
          checkFile(self._getFile());
        });
      }

      createAndFlush(stats.size);
    });
  })(this._getFile()); 

Это исправлено?

Я исправил эту проблему, указав абсолютный путь следующим образом:
winston.add(winston.transports.File, { filename: $ {__ dirname} /logs/appError.log })

Это работает для меня. Недавно у меня возникла проблема с проектом с Winston, использующим Atom, где файлы .gitignore не отображались в каталоге файлов проекта в Atom из-за обновленного параметра в пакете древовидного представления ... (Вариант: Скрыть игнорирование VCS Файлы)

_Использование Node 6.2.2 и Winston 2.2.0._

Код:

'use strict';

let Winston = require('winston');


const logger = new Winston.Logger({
    level: 'verbose',
    transports: [
      new Winston.transports.Console({
        timestamp: true
      }),
      new Winston.transports.File({
        filename: 'app.log',
        timestamp: true
      })
    ]
  });

logger.info('Holla');

Создает файл app.log с выводом: {"level":"info","message":"Holla","timestamp":"2016-07-01T19:29:14.035Z"} и записывает в консоль с помощью 2016-07-01T19:29:14.034Z - info: Holla

Я просто столкнулся с этой проблемой. Сначала должен существовать каталог. winston создаст для вас новые файлы, но не создает для вас новых каталогов (например, вам нужно создать каталог «журналов», если вы пытаетесь войти в файл, расположенный в logs / app.js)

Wish Winston проверил, существует ли папка / каталог журнала, а затем создал папку / каталог журнала, если он не существует во время запуска. Думаю, фс может это правильно сделать?

+1

+1

+1

if (!fs.existsSync('path') {
    fs.mkdirSync('path');
}

http://thisdavej.com/using-winston-a-versatile-logging-library-for-node-js/

У меня была эта проблема, и я решил ее, используя двойную косую черту:

        Logger.loggerInfo = new Winston.Logger({
            level: 'info',
            transports: [
                new Winston.transports.File({
                    filename: process.cwd() + '\\logs\\info.log',
                    timestamp: true
                })
            ]
        });

Я провел несколько тестов с несколькими расширенными механизмами ведения журнала (включая Winston), и оказалось, что регистраторы не могут записывать в файл, если вы выполняете чистый выход (process.exit (0)).
Удаление чистого выхода решает проблему.

@fvuilleumier, вы правы, спасибо, однако удаление process.exitCode = 0 (или любого другого кода) отлично работает, потому что позволяет плавно завершить цикл.

Пример создания файла

const filename = path.join(__dirname, 'created-logfile.log');

const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename })
  ]
});

создать пример файла

@fvuilleumier @nicosommi, но что

@danbrownbox в конце дня js-скрипт - это просто файл, который выполняется до конца, поэтому, если вы хотите выйти из приложения после определенной строки, вам просто нужно построить правильный поток выполнения для вашей функции

Не работает с относительным путем на моем Mac, но создает файл, если указан абсолютный путь.

Неважно, использую ли я абсолютное или относительное значение. У меня не работает при динамическом добавлении транспорта.

function createLogFile(appName) {
  pathUtils.ensureDirectoryExists('logs');
  pathUtils.ensureDirectoryExists(`logs/${appName}`);
  winston.add(winston.transports.File, {
    level: 'debug',
    //filename: `logs/${appName}/export-${Date.now()}.log`,
    //filename: `${__dirname}/logs/${appName}/export-${Date.now()}.log`,
    filename: `${process.cwd()}/logs/${appName}/export-${Date.now()}.log`,
    json: false,
    formatter: _formatLog()
  });
}

Однако, если я добавлю этот транспорт в createLogger() он будет работать с absolute.

Этот ответ работает для меня.
Вот мой код:
`` ''
const winston = require ('winston');
const logDir = 'журналы';
const fs = require ('fs');

if (! fs.existsSync (logDir)) {
fs.mkdirSync (logDir);
}

const logger = winston.createLogger ({
уровень: 'информация',
формат: winston.format.json (),
exitOnError: ложь,
транспорты: [
new (require ('winston-daily-rotate-file')) ({
имя файла: ${logDir}/logs.log ,
datePattern: 'ГГГГ-ММ-ДД-ЧЧ',
zippedArchive: правда,
уровень: "глупо"
}),
new (require ('winston-daily-rotate-file')) ({
имя файла: ${logDir}/errors.log ,
datePattern: 'ГГГГ-ММ-ДД-ЧЧ',
zippedArchive: правда,
уровень: 'ошибка'
})
],
});

экспорт {логгер};

logger.silly («глупый тест»);
logger.info ('тест информации');
logger.warn ('тест предупреждений');
logger.error ('проверка ошибок');
`` ''

Я являюсь первоначальным автором этого выпуска (другой аккаунт). Я вернулся ... потому что у меня та же проблема, и я забыл, как я ее решил 🤣

Вы используете последнюю версию [email protected] ? Удостоверились ли вы, что каталог существует там, где вы хотите, чтобы файл журнала был ( winston не будет создавать каталоги для вас, хотя мы принимаем PR, делающий это опцией или даже поведением по умолчанию). Вероятно, нам следует закрыть эту старую проблему, как только мы сможем снова запустить вас :)

Я был бы готов поработать для этого PR в свободное время, так что оставьте это мне 👍

Прохладный! 👍 Собираясь закрыть это, мы можем отслеживать содержимое каталога в # 1465. Отдельные проблемы следует тестировать с помощью master и открывать как новые, если проблемы сохраняются. Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги