Когда мой Python script записывает большое количество журналов в текстовый файл по строкам с помощью встроенной библиотеки протоколов Python, в моей программе Windows с поддержкой Delphi я хочу эффективно прочитайте все вновь добавленные журналы (строки).
Когда записывается сценарий Python в файл, моя программа для Windows будет сохраните дескриптор файла readonly. этот файл журнала;
Я использую Windows API для получения сообщается, когда файл журнала изменено; Как только файл будет изменен, он будет читать вновь добавленные строки.
Я новичок в Python, вы видите любую возможную проблему с этим подходом? Блокирует ли журнал регистрации Python весь журнал? Спасибо!
Как отметил ʇsәɹo, стандартный регистратор FileHandler не блокирует файл, поэтому он должен работать. Однако, если по какой-то причине вы не можете заблокировать файл, тогда я бы рекомендовал, чтобы ваше другое приложение открывало файл периодически, записывайте позицию, в которую он читает, и затем снова возвращайтесь к этой точке. Я знаю, что программа Linux DenyHosts использует этот подход при работе с файлами журналов, которые он должен отслеживать в течение длительного периода времени. В таких ситуациях просто блокировка невозможна, так как каталоги могут перемещаться, файл поворачивается и т.д. Хотя это и усложняет ситуацию, тогда вам нужно хранить имя файла + читать позицию в постоянном состоянии где-то.
Это зависит от используемого вами обработчика ведения журнала, но, как вы можете видеть из исходного кода, logging.FileHandler в настоящее время не работает создавать любые блокировки файлов. По умолчанию он открывает файлы в режиме "a" (добавление), поэтому, пока ваши вызовы Windows могут справиться с этим, вы должны быть в порядке.