Fiz um script python que se comunica com um servidor web usando um loop infinito. Quero registrar todos os dados de comunicação em um arquivo e também monitorá-los do terminal ao mesmo tempo. então eu usei o comando tee assim.
python client.py | tee logfile
no entanto, não recebi nada do terminal nem do arquivo de log. o script python está funcionando bem. o que esta acontecendo aqui? estou esquecendo de algo?
alguns conselhos seriam apreciados. Agradeço antecipadamente.
sys.stdout.flush()
de seu script sempre que logar uma linha.Respostas:
De
man python
:Então, o que você pode fazer é:
Ou usando
tee
:fonte
script
, que também desativa o armazenamento em buffer e, adicionalmente, faz com que as sequências de controle (C-a
teclas do cursor, etc.) funcionem: stackoverflow.com/a/39269661/15690 .tee
é visto como um tubo (o que é) e não como um híbrido: ele escreve para o console. Nota: o comportamento também pode ser controlado dentro de um programa python.python -u client.py | tee >> logfile
não funcionaria. O>>
introduziria um outro caso da escrita tamponada para um arquivo. Isso é o quetee -a
resolve.