Ведение журнала: как установить символ новой строки в файлах журнала?
Я использую ведение журнала на Python 3.7+ как в Windows, так и в Linux, но окончание строки зависит от платформы.
Хотя вы можете установить символ новой строки при чтении или записи файла, очевидно, что вы не можете установить
logging.FileHandler
:
https://docs.python.org/3/library/logging.handlers.html#filehandler
Что-то вроде
logging.FileHandler(newline = '\n')
сделал бы, как в
io.open(newline = '\n')
:
https://docs.python.org/3/library/io.html?highlight=file#io.open (чтение или запись файлов)
https://docs.python.org/3/library/io.html?highlight = файл #io.TextIOWrapper (
newline
объяснено здесь)
Возможно, есть способ обеспечить одинаковый конец строки для входа как в Windows, так и в Linux, но я пока не нашел.
С Уважением.
2 ответа
К сожалению, вы не можете это контролировать, потому что
import logging
class MyFileHandler(logging.FileHandler):
def _open(self):
return open(self.baseFilename, self.mode, encoding=self.encoding, newline='\n') # set newline according to your needs here
h = MyFileHandler("foo.log")
редактировать: удалено
logging.FileHandler
наследуется от
logging.StreamHandler
который имеет
terminator
атрибут. Вы можете установить его на экземпляр. Я предоставил портативное решение, используя
os
модуль, но вы можете указать его явно, если хотите.
import logging
import os
h = logging.FileHandler("foo.log")
h.terminator = os.linesep
https://docs.python.org/3/library/logging.handlers.html#logging.StreamHandler.terminator