Найти - Пользователи
Полная версия: Дублирование stdout в лог-файл
Начало » Python для новичков » Дублирование stdout в лог-файл
1
tibs
Подскажите как это можно осуществить? Нашел пример только на перенаправление:

    log_stream = open("1.log", 'a');
STDOUT = sys.stdout.fileno()
#получили новый файловый объект с новым дескриптором > 2, но по прежнему указывающий на открытый файл терминала
new_base_stdout_d = os.dup(STDOUT)
base_stdout = os.fdopen(new_base_stdout_d, 'w')
#теперь на дискрипторе STDOUT откроем файловый объект(а верее, просто сдублируем дескриптор уже открытого файла), а старый поток закроем
os.dup2(log_stream.fileno(), STDOUT)
log_stream.close()
asilyator
В юниксе искаропки

program | tee logfile
JOHN_16
А может использовать модуль logging?
ну или ручками, делаете свой класс метод которого пишет полученную строку в файл и в stdout
tibs
JOHN_16
А может использовать модуль logging?
ну или ручками, делаете свой класс метод которого пишет полученную строку в файл и в stdout

Написал такой класс.

class Logger(object):
def __init__(self):
self.terminal = sys.stdout
self.log = open(name_source+".log", "a")

def write(self, message):
self.terminal.write(message)
self.log.write(message)

А как тогда к logging цеплять хэндлеры?
asilyator
Через add_stream() :) или через коструктор.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB