Question

J'ai un script PHP que je lance à partir d'une ligne de commande (windows) qui effectue diverses tâches. Le seul résultat obtenu est une instruction 'print' directement à l'écran.

Ce que je veux faire, c'est également enregistrer cela dans un fichier journal.

Je sais que je peux faire:

php-cli script.php > log.txt  

Mais le problème avec cette approche est que toute la sortie est écrite dans le fichier journal, mais je ne vois pas comment les choses se déroulent entre-temps (je peux donc arrêter le processus si quelque chose de louche se produit).

Juste pour anticiper d’autres questions possibles, je ne peux pas changer tous les caractères imprimés en une déclaration de journal, car ils sont trop nombreux et je préfère ne rien changer dans le code de peur que je ne sois blâmé pour quelque chose qui se passe fubar. De plus, il y a aussi le manque de temps. Je dois aussi exécuter ceci sur une machine Windows.

Merci d'avance :)

Edit: Merci pour les réponses les gars, à la fin, j’ai opté pour la méthode du navigateur car c’était la méthode la plus facile et la plus rapide à configurer, même si je suis convaincue qu’il existe une solution réelle à ce problème quelque part.

Était-ce utile?

La solution

J'ai toujours ouvert le fichier journal dans mon navigateur Web. Cela me permet de l'actualiser facilement et n'interrompt aucune écriture dans le fichier que fait Windows. Ce n'est pas particulièrement élégant mais ça marche!

Autres conseils

Vous pouvez créer un script PowerShell qui exécute la commande, lit les données à partir de la commande STDOUT de la commande, puis affiche le résultat dans le fichier journal et le terminal à regarder. Vous pouvez utiliser les commandes Write-Output et Write-Host.

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

Une autre option consisterait à trouver un programme en té qui lira les entrées et les redirigera vers deux sorties différentes. Je pense avoir vu cela pour les fenêtres, mais je ne pense pas qu'elles soient standard.

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

Vous voulez le "tee" " commande pour Windows. Voir http://en.wikipedia.org/wiki/Tee_(command) .

Powershell inclut une commande tee. De nombreuses versions de tee pour Windows sont également disponibles, par exemple:

Peut également être implémenté dans VBScript si vous préférez.

MODIFIER : je viens de penser à moi. Je devrais également mentionner la commande de fin: http://en.wikipedia.org/wiki/Tail_ (Unix) . Tail vous permet de lire les N dernières lignes d’un fichier et inclut également un "moniteur de fichier". mode qui affiche en permanence la fin du fichier en temps réel. Ceci est parfait pour la surveillance des fichiers journaux, car il vous permet de consulter le journal en temps réel sans interférer avec le processus qui écrit dans le journal. Il existe plusieurs implémentations de tail pour Windows, basées sur la ligne de commande et l'interface graphique. Les packages Services for UNIX de Microsoft (ou ce qu'ils appellent maintenant) incluent également une version de tail. Quelques exemples:

Certains d'entre eux vont bien au-delà d'afficher le fichier en temps réel à mesure de sa mise à jour et peuvent envoyer des alertes par courrier électronique et colorier les correspondances de chaînes, surveiller plusieurs fichiers à la fois, etc.

Lent:

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

ou dans un fichier de commandes:

for /f "delims=" %%a in ('php-cli script.php') do @echo %%a&echo %%a>>log.txt
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top