1

さまざまなタスクを実行するコマンド ライン (Windows) から実行している PHP スクリプトがあります。それが提供する唯一の出力は、画面に直接出力する「print」ステートメントを介したものです。

私がやりたいのは、これをログファイルにもキャプチャすることです。

私はできることを知っています:

php-cli script.php > log.txt  

しかし、このアプローチの問題点は、すべての出力がログ ファイルに書き込まれることですが、その間はどのように実行されているかを確認できません (そのため、危険なことが起こった場合にプロセスを停止できます)。

他の可能性のある質問を先取りするために、すべての印刷物をログステートメントに変更することはできません。それらが多すぎるため、コード内の何も変更したくありません。さらに、時間の不足という側面もあります。これをWindowsマシンでも実行する必要があります。

前もって感謝します :)

編集:答えてくれてありがとう、結局、私はブラウザの方法を使いました。これは、セットアップが最も簡単で迅速だったからです。ただし、この問題に対する実際の答えがどこかにあると確信しています。

4

4 に答える 4

3

コマンドを実行し、コマンドの STDOUT からデータを読み取り、出力をログ ファイルとターミナルの両方に出力して監視できるようにする、powershell スクリプトを作成できます。コマンド Write-Output および Write-Host を使用できます。

Microsoft のサイト: http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/tee-object.mspx

もう 1 つのオプションは、入力を読み取り、それを 2 つの異なる出力に転送するティー プログラムを使用することです。Windows でこれらを見たことがあると思いますが、標準ではないと思います。

ウィキペディア: http://en.wikipedia.org/wiki/Tee_(コマンド)

于 2008-11-10T16:22:51.767 に答える
1

Windows 用の「tee」コマンドが必要です。http://en.wikipedia.org/wiki/Tee_(コマンド)を参照してください。

Powershell には tee コマンドが含まれており、Windows 用のさまざまなバージョンの tee も利用できます。たとえば、次のようになります。

必要に応じて、VBScript で実装することもできます。

編集:ちょうど私がテールコマンドについて言及する必要があることを思いついた:http://en.wikipedia.org/wiki/Tail_(Unix)。Tail を使用すると、ファイルの最後のN行を読み取ることができます。また、ファイルの終わりをリアルタイムで継続的に表示する「ファイル モニター」モードも含まれています。これは、ログに書き込んでいるプロセスに干渉することなくリアルタイムでログを監視できるため、ログ ファイルの監視に最適です。Windows 用の tail には、コマンド ライン ベースと GUI ベースの両方の実装がいくつかあります。Microsoft の Services For UNIX パッケージ (または、Microsoft が現在呼んでいるもの) には、tail のバージョンも含まれています。いくつかの例:

これらのいくつかは、更新時にファイルをリアルタイムで表示するだけでなく、電子メールアラートを送信したり、文字列の一致を色付けしたり、一度に複数のファイルを監視したりすることができます.

于 2008-12-05T05:39:49.023 に答える
1

私は常にログ ファイルを Web ブラウザで開いていました。これにより、簡単に更新でき、Windows によるファイルへの書き込みが中断されることはありません。特にエレガントではありませんが、機能します。

于 2008-11-10T16:40:28.143 に答える
0

遅い:

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

またはバッチファイルで:

for /f "delims=" %%a in ('php-cli script.php') do @echo %%a&echo %%a>>log.txt
于 2008-11-10T16:41:12.883 に答える