Произошла ошибка при создании файлового потока в модуле is7zipextract при установке il 2

Обновлено: 02.07.2024

Создает поток. Доступен для записи в файл, который вращается. Поведение вращения можно глубоко настроить; дополнительно можно использовать классическое поведение logrotate UNIX.

Использование

Установка

Оглавление

В версии 3 пакет был полностью переработан с использованием async/await.

Добавлены типы TypeScript для событий и внешнего события.

Важное изменение: по умолчанию расширение .gz добавляется к ротируемым сжатым файлам.

Критическое изменение: немного изменен способ выполнения внешней команды сжатия; возможные критические изменения.

Чтобы поддерживать обратную совместимость при обновлении с версии 2 до версии 3, просто следуйте этим правилам:

В интерфейсе пакета есть два основных изменения.

В версии 1 экспортом по умолчанию пакета был непосредственно конструктор RotatingFileStream, и вызывающая сторона должна его использовать; в то время как в v2 нет экспорта по умолчанию, и вызывающая сторона должна использовать экспортированную функцию createStream и не должна напрямую использовать класс RotatingFileStream. Это довольно легко обнаружить: если это изменение не будет применено, может произойти только ошибка времени выполнения.

Другим важным изменением является удаление параметра rotateTime и добавление intervalBoundary. В версии 1 аргумент времени, передаваемый функции генератора имени файла, по умолчанию является временем начала задания ротации, а если используется опция options.interval, то это меньшее время. граница временного интервала в пределах запущенного задания ротации. Позже меня попросили добавить возможность восстановить значение по умолчанию для этого аргумента, поэтому для этой цели я ввел опцию options.rotationTime. В итоге получилось что-то немного запутанное, что мне никогда не нравилось. В версии 2 аргумент времени, передаваемый функции генератора имен файлов, всегда является временем начала задания ротации, если только не используется опция options.intervalBoundary. В двух словах, чтобы поддерживать обратную совместимость при обновлении с версии 1 до версии 2, просто следуйте этим правилам:

  • используя options.rotation: ничего не делать
  • не использовать options.rotation :
    • не использовать options.interval : ничего не делать
    • с использованием options.interval :
      • используя options.rotationTime : чтобы удалить его
      • не используя options.rotationTime : используйте options.intervalBoundary .

      rfs.createStream(имя файла[, параметры])

      • имя файла | Имя файла или функция для его создания, которая называется генератор имени файла. Подробнее см. ниже.
      • options Параметры поворота. Подробнее см. ниже.
      • Возврат: вращающийся файловый поток!

      Этот интерфейс вдохновлен интерфейсом fs.createWriteStream. Файл ротируется в соответствии с правилами options.

      имя файла

      Самая сложная проблема с именем файла: "как назвать повернутое имя файла?"

      Ответ на этот вопрос может варьироваться во многих формах в зависимости от требований приложения и/или спецификаций. Если требований нет, можно использовать строку и использовать генератор повернутых имен файлов по умолчанию; в противном случае можно использовать функцию, которая возвращает имя повернутого файла.

      Примечание: если часть возвращаемого пути назначения не существует, задание ротации попытается создать его.

      имя файла(время[, индекс])

      • По умолчанию: время начала ротации;
      • если включены обе опции options.interval и intervalBoundary: время начала периода ротации.

      Если значение равно null , должно быть возвращено неповернутое имя файла.

      index Прогрессивный индекс ротации по размеру за тот же период ротации.

      Примером сложной функции генератора повернутых имен файлов может быть:

      Примечание: если используются оба параметра options.interval, options.size, возвращаемое имя повернутого файла должно быть функцией обоих аргументов: time и index .

      имя файла(индекс)

      • index Прогрессивный индекс вращения. Если null , должно быть возвращено имя файла без ротации.

      Если включено классическое поведение logrotate (с помощью options.rotate ), имя повернутого файла является только функцией index .

      Класс: RotatingFileStream

      Расширяет поток.Writable. Его не следует использовать напрямую. Экспортируется только для использования с оператором instanceof и т.п.

      Событие: "внешнее"

      • stdout Стандартный вывод внешней команды сжатия.
      • stderr Стандартная ошибка внешней команды сжатия.

      Внешнее событие генерируется после того, как внешняя команда сжатия завершает свое выполнение, чтобы предоставить доступ к выходным потокам команды.

      Событие: "история"

      Событие истории генерируется после завершения задания проверки истории.

      Событие: "открыть"

      Событие open генерируется при открытии неповернутого файла.

      Событие: "удалено"

      • filename Имя удаленного файла.
      • номер
        • true, если файл был удален из-за options.maxFiles
        • false, если файл был удален из-за параметра options.maxSize

        Событие удалено генерируется после удаления повернутого файла из-за параметров options.maxFiles или options.maxSize .

        Событие: "поворот"

        Событие ротации генерируется после запуска задания ротации.

        Событие: "повернуто"

        Событие ротации генерируется после завершения задания ротации.

        Событие: "предупреждение"

        Событие-предупреждение генерируется при возникновении неблокирующей ошибки.

        варианты

        • сжать : | | Указывает метод сжатия повернутых файлов. По умолчанию: ноль .
        • кодировка : указывает кодировку по умолчанию. По умолчанию: 'utf8' .
        • history : указывает имя файла истории. По умолчанию: ноль .
        • неизменный: никогда не изменять имена файлов. По умолчанию: ноль .
        • initialRotation : начальная ротация на основе временной метки неповернутого файла. По умолчанию: ноль .
        • interval : указывает временной интервал для ротации файла. По умолчанию: ноль .
        • intervalBoundary : Создает имя файла с ротацией с нижней границей периода ротации. По умолчанию: ноль .
        • maxFiles : указывает максимальное количество сохраняемых повернутых файлов. По умолчанию: ноль .
        • maxSize : указывает максимальный размер сохраняемых повернутых файлов. По умолчанию: ноль .
        • mode : проксировано в fs.createWriteStream. По умолчанию: 0o666 .
        • omitExtension : Исключает расширение .gz из сжатых ротированных файлов. По умолчанию: ноль .
        • path : указывает базовый путь для файлов. По умолчанию: ноль .
        • rotate : Включает классическое поведение UNIX logrotate. По умолчанию: ноль .
        • size : указывает размер файла для поворота. По умолчанию: ноль .
        • teeToStdout: также записывает содержимое файла в стандартный вывод. По умолчанию: ноль .

        кодирование

        Указывает кодировку по умолчанию, которая используется, когда кодировка не указана в качестве аргумента функции stream.write().

        Если он присутствует, он добавляется к сгенерированным именам файлов, а также к файлу истории.

        teeToStdout

        Если установлено значение true , содержимое файла также будет записано в стандартный вывод. Полезно для отладки целей.

        Принимает положительное целое число, за которым следует одна из следующих возможных букв:

        интервал

        Принимает положительное целое число, за которым следует одна из следующих возможных букв:

        • с: секунды. Принимает целочисленный делитель 60.
        • m: минуты. Принимает целочисленный делитель 60.
        • ч: часы. Принимает целочисленный делитель 24.
        • д: дни. Принимает целое число.
        • М: месяцы. Принимает целое число. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

        граница интервала

        Если установлено значение true , время аргумента генератора имен файлов больше не является временем начала задания ротации, а нижней границей интервал ротации.

        Примечание: этот параметр действует, только если используется options.interval.

        сжать

        По историческим причинам можно использовать внешнее сжатие, но лучше всего использовать значение "gzip" .

        Чтобы включить внешнее сжатие, можно использовать функцию или просто логическое значение true, чтобы использовать внешнее сжатие по умолчанию. Функция должна принимать имена исходного и целевого файлов и должна возвращать команду оболочки, которая должна быть выполнена для сжатия файла. Два следующих фрагмента кода имеют точно такой же эффект:

        Примечание: этот параметр игнорируется, если используется options.immutable.

        Примечание: команда оболочки для сжатия повернутого файла не должна удалять исходный файл, он будет удален пакетом, если задание по ротации завершится успешно.

        опустить расширение

        Начиная с версии 3 пакет по умолчанию добавляет расширение .gz к ротируемым сжатым файлам. Одновременно была добавлена ​​эта опция: установите для этой опции значение true, чтобы не добавлять расширение, т.е. сохранить обратную совместимость.

        начальное вращение

        Когда программа останавливается в периоде ротации, а затем перезапускается в новом периоде ротации, журналы с другим периодом ротации помещаются в следующий файл с ротацией; в двух словах: работа по смене потеряна. Если для этого параметра задано значение true, выполняется первоначальная проверка временной метки не ротированного файла, и, если она приходится на предыдущий период ротации, также выполняется начальная ротация.

        Примечание. Этот параметр действует, только если используются параметры options.interval и options.intervalBoundary.

        Примечание: этот параметр игнорируется, если используется options.rotate.

        повернуть

        Если указано, включается классическое поведение logrotate UNIX, и значение этого параметра имеет такой же эффект в файле logrotate.conf.

        неизменяемый

        Если установлено значение true , имена сгенерированных файлов никогда не меняются. Новые файлы немедленно генерируются с их повернутым именем.Другими словами, генератор имени повернутого файла никогда не вызывается с нулевым аргументом время, за исключением случаев, когда необходимо определить имя файла истории; это может произойти, если options.history не используется, а options.maxFiles или options.maxSize используются. Аргумент имени файла, переданный в событие 'open', теперь оценивается как имя вновь созданного файла.

        Полезно для отправки журналов в logstash через filebeat.

        Примечание: этот параметр игнорируется, если не используется options.interval.

        история

        Из-за сложности, которую может иметь имена ротированных файлов из-за функции генератора имен файлов, если количество или размер ротируемых файлов не должны превышать заданный предел, пакет нужен файл, где хранить эту информацию. Этот параметр указывает имя файла истории. Этот параметр вступает в силу только в том случае, если используется хотя бы один из параметров options.maxFiles или options.maxSize. Если null , используется неповернутое имя файла с суффиксом '.txt'.

        макс. файлов

        Если указано, это значение представляет собой максимальное количество сохраняемых повернутых файлов.

        максимальный размер

        Если указано, это значение должно соответствовать тому же синтаксису, что и option.size, и является максимальным размером сохраняемых повернутых файлов.

        Независимо от того, когда и почему происходит чередование, содержимое одного файла stream.write никогда не будет разделено между двумя файлами.

        по размеру

        После того как неповернутый файл открывается в первый раз, проверяется его размер, и, если он больше или равен предельному размеру, происходит первое вращение. После каждого stream.write выполняется одна и та же проверка.

        по интервалу

        Пакет устанавливает время ожидания для запуска задания ротации в нужный момент.

        С журналами следует обращаться очень осторожно, поэтому этот пакет старается никогда не перезаписывать файлы.

        При создании потока, если файл журнала без ротации уже существует и его размер превышает размер ротации, выполняется первоначальная попытка ротации.

        При каждой попытке ротации выполняется проверка, чтобы убедиться, что файл назначения еще не существует; если это не так, создается новое целевое имя повернутого файла и перед продолжением выполняется та же проверка. Это повторяется до тех пор, пока не будет найдено несуществующее имя файла назначения или пакет не будет исчерпан. По этой причине функция генератор имен файлов может вызываться несколько раз для каждого задания ротации.

        Если запрашивается через options.maxFiles или options.maxSize , в конце задания ротации выполняется проверка соблюдения заданных ограничений. Это означает, что во время выполнения ротации оба ограничения могут не соблюдаться. То же самое может произойти до конца первого задания ротации, если options.maxFiles или options.maxSize были изменены между двумя запусками. Первая проверка выполняется для options.maxFiles , в случае удаления некоторых файлов выполняется проверка для options.maxSize , и, наконец, другие файлы могут быть удалены. Когда options.maxFiles или options.maxSize включены впервые, файл истории может быть создан с одним повернутым именем файла (как возвращается функция генератора имени файла) в каждой строке.

        После возникновения события об ошибке больше ничего нельзя сделать: поток также закрывается.

        Требуется Node.js v12.x.

        Пакет протестирован на всех версиях Node.js, поддерживаемых в настоящее время, в соответствии с выпуском Node.js.

        Для работы с пакетом под Windows обязательно настройте bash.exe в качестве оболочки скрипта.

        Типы TypeScript распространяются вместе с самим пакетом.

        Не стесняйтесь сообщать о любых ошибках или несоответствиях @github.

        Если вы найдете этот пакет полезным, рассмотрите возможность пожертвовать немного сатоши на этот биткойн-адрес: 12p1p5q7sK75tPyuesZmssiMYr4TKzpSCN

        Читайте также: