Pergunta

Eu tenho um script PHP que eu estou fugindo de uma linha de comando (Windows) que executa uma variedade de tarefas, ea única saída que dá é através de declarações 'print' que saída direta para a tela.

O que eu quero fazer é a captura a um arquivo de log também.

Eu sei que posso fazer:

php-cli script.php > log.txt  

Mas o problema com esta abordagem é que toda a saída é gravada no arquivo de log, mas eu não posso ver como as coisas estão funcionando no tempo médio (para que eu possa parar o processo se algo desonesto está acontecendo).

Apenas para antecipar-se outras questões possíveis, eu não posso mudar toda a cópia de uma declaração de registro, pois há demasiados deles e eu prefiro não mudar nada no código para que eu não ser culpado por algo acontecendo danoso. Além disso, há a falta de aspecto tempo também. Eu também tenho que executar isso em uma máquina Windows.

Agradecemos antecipadamente:)

Edit:. Obrigado pelas caras respostas, no final eu fui com o método navegador porque essa era a mais rápida e fácil de configurar, embora eu estou convencido de que há uma resposta real para isso em algum lugar problema

Foi útil?

Solução

Eu sempre aberto o arquivo de log em meu navegador web. Isso me permite atualizar-lo facilmente e não interrompe qualquer escrito para o arquivo que o Windows faz. Não é particularmente elegante, mas ela não funciona!

Outras dicas

Você pode criar um script powershell que executa o comando, lê os dados a partir de STDOUT do comando, em seguida, envia a saída para o arquivo de log e do terminal para você assistir. Você pode usar os comandos Write-Output e Write-Host.

site da Microsoft: http: // www. microsoft.com/technet/scriptcenter/topics/msh/cmdlets/tee-object.mspx

Outra opção seria o uso encontrar um tee programa que irá ler a entrada e desviá-la para duas saídas diferentes. Creio ter visto estes para janelas, mas eu não acho que eles são padrão.

Wikipedia: http://en.wikipedia.org/wiki/Tee_(command)

Você deseja que o comando "tee" para Windows. Consulte http://en.wikipedia.org/wiki/Tee_(command)

PowerShell inclui um comando T, e também há inúmeras versões do tee para Windows disponíveis, por exemplo:

Também pode ser implementada no VBScript se você preferir.

Editar : Apenas me ocorreu que eu também mencionar o comando tail: http://en.wikipedia.org/wiki/Tail_ (Unix) . Cauda permite que você leia a última N linhas de um arquivo, e também inclui um modo "monitor de arquivo" que apenas continuamente exibe o final do arquivo em tempo real. Isto é perfeito para o arquivo de log de monitoramento, uma vez que permite que você assista o log em tempo real sem interferir com o processo que está escrito para o log. Existem várias implementações de cauda para o Windows, tanto de linha de comando e interface gráfica baseada. Serviços da Microsoft para pacotes UNIX (ou o que eles estão chamando agora) também incluem uma versão de cauda. Alguns exemplos:

Alguns deles vão muito além de apenas exibir o arquivo em tempo real, uma vez que atualiza e pode enviar e-mail alertas e jogos de cordas colorize, monitorar vários arquivos de uma vez, etc.

lenta:

for /f "delims=" %a in ('php-cli script.php') do @echo %a&echo %a>>log.txt

ou em um arquivo de lote:

for /f "delims=" %%a in ('php-cli script.php') do @echo %%a&echo %%a>>log.txt
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top