Não há saída do arquivo de log ao executar script sob a tela, com o redirecionamento do console (tee)

1

Eu tenho um script python que gravará alguns logs gerais no console. Eu redirecionei isso para um arquivo de log usando o típico python -u jbot.py | tee -a jbot.log . Isso funciona bem, eu recebo saída do console e entrada de arquivo de log. No entanto, ao tentar executar isso na tela:

screen python -u jbot.py | tee -a jbot.log

Não obtenho nenhuma saída de registro no meu arquivo. Uma vez que eu desconectei de screen , a saída do console para aquela sessão é suprimida inteiramente, ou existe uma maneira que eu ainda possa ter entrada de arquivo de log do stdout e stderr do meu script?

Sei que usar uma biblioteca de log provavelmente resolveria isso (já que estou fazendo uma triagem de qualquer forma), mas por enquanto quero continuar a capturar a saída do console (se possível) até poder integrar corretamente um módulo de log ao meu código. / p>     

por MrDuk 03.02.2017 / 17:12

1 resposta

3

Você precisa fazer algo assim:

screen sh -c 'python -u jbot.py | tee -a jbot.log'

Basicamente, antes de você estar direcionando a saída da tela (não do seu script python diretamente) para o log. Tela leva um comando para executar como seu argumento, o que ele próprio não usando um shell. Então você precisa explicitamente fazê-lo executar um shell.

Outra opção é usar o registro de saída embutido na tela; veja a opção -L (também disponível na tela através de sua interface do usuário).

    
por 03.02.2017 / 17:36