Уинстон Дж.С. Мои файлы журналов не меняются после превышения максимального размера

У меня есть следующая конфигурация winston:

'use strict'

import winston from 'winston'
import config from '../../config/environment'

export default winston.createLogger({
  level: 'info',
  format: winston.format.printf(info => info.message),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({
      filename: `${config.logsPath}/express.error.log`,
      maxsize: 300,
      level: 'error'
    }),
    new winston.transports.File({
      filename: `${config.logsPath}/express.log`,
      maxsize: 300
    })]
})

Ни один из этих файлов не ротируется после достижения порога в 300 байт.


person Francisco Farías    schedule 12.10.2017    source источник
comment
Вы проверили, действительно ли у процесса есть разрешение на запись для создания новых файлов журналов?   -  person transient_loop    schedule 12.10.2017
comment
Почему у него должно быть разрешение на создание файлов журналов изначально, но не их ротация? Я не хочу показаться грубым, извините. Просто он создает файлы, когда ему нужно войти в систему. Просто их не крутишь.   -  person Francisco Farías    schedule 12.10.2017
comment
хорошо, если бы файлы были созданы ранее, были бы созданы вручную, скопированы с помощью команды touch вошедшим в систему пользователем .... просто идея о том, в чем может быть проблема, поэтому это просто комментарий :)   -  person transient_loop    schedule 12.10.2017
comment
Ага. Я бы хотел, чтобы это было так, но тот же процесс, который создает файлы, отвечает за их ротацию. Я спросил в гитхабе winstonjs как о проблеме, но не получил ответа. Я нашел другого пользователя с той же проблемой.   -  person Francisco Farías    schedule 12.10.2017
comment
Можете ли вы создать образец файла, который записывает информацию в цикле с помощью этого регистратора и посмотреть, происходит ли какое-либо вращение? В противном случае поставьте точку останова на github.com/winstonjs /winston/blob/ и посмотрите, что не так при запуске кода   -  person Tarun Lalwani    schedule 20.10.2017
comment
Спасибо, я попробую. Пробовал цикл, но не устанавливал точку останова.   -  person Francisco Farías    schedule 21.10.2017


Ответы (1)


Вы используете релиз-кандидат версии 3.0.0, у которого есть ошибка в транспорте File. По сути, после превышения порога maxsize внутренняя переменная self.filename не обновлялась, поэтому _createStream повторно открывал поток добавления в существующий файл и продолжал запись в него. Это работает с первого раза, потому что self.filename устанавливается при инициализации из параметров.

Я отправил PR, который устраняет проблему. Кроме того, вы можете вернуться к 2.4.0, если это не проблема.

person Unglückspilz    schedule 21.10.2017