2017-12-30 88 views
0

この質問は重複して表示されることがありますが、最後まで読んでください。埋め込みLinux - >アプリケーションログをファイルに保存

私は組み込みLinux上で動作するアプリケーションを持っており、アプリケーションからすべてのログを取得したいと思います。私はファイル記述子をstdoutには1、stderrには2として試しました。私はstderrログをキャプチャすることができました。 printfステートメントでログをキャプチャしたいと思います。アプリケーションはすでにビルドされているため、変更することはできません。それはスクリプトユーティリティを持たないので、組み込みLinuxです。 私のアプリケーションにはのprintfのログがあります。私が望むのは、もしあればシェルコマンドを使ってそれらをキャプチャすることだけです。 私はprintfのメッセージが助けてください、私はエラーメッセージをキャプチャすることができたではなく、これらのコマンドで

./application 2>&1 | tee file.txt 
./application >cmd.log 2>&1 
./application | tee log.txt 

コマンド以下

を試してみました。

答えて

1

あなたの最初の2本のコマンドラインは、実際に(最後のコマンドラインは、後者をミス)stdinstderrに(何でも、printf経由puts)に送信され、すべてをキャッチする必要があります。

がコンソールまたはttyに印刷されたメッセージ、アプリケーションリダイレクト(例えば、dup2を使用して)stderr及び/又はstdoutのいずれかは、いくつかの他のデバイスにまだあるか、またはそれは全くこれらの2つのファイルに出力を送信しない場合(特定のエラーの場合には、glibcはコンソールデバイスに直接書き込むことが知られています)。

出力が実際にどこに送信されているかわからないと、それをキャッチできません。アプリケーションを使用して、これらの文字列がどこに送信されているかを調べることができます。

+0

シェルは、そのメカニズムをサポートするbashのようなものですが、組み込みデバイス上ではシェルがよりプリミティブになるはずです。アプリケーションが直接/ dev/consoleなどに書き込むことも可能です。 –

関連する問題