ログ メッセージを ANSI カラー コードで出力する Java フレームワークを作成しています。もちろん、ユーザーが Eclipse 内からそれを使用する可能性は常にあります。その場合、ANSI エスケープ コードがコンソールに文字化けして表示されます。ユーザーが手動でオフにする必要がないように、これを自動検出すると便利です。
この件についてグーグルで調べてみましたが、それは不可能だと思いますが、試した人はあまりいないので、尋ねる価値があると思いました. 頭に浮かぶ1つの方法は、動作するかどうかを確認することですが"xterm".equals(System.getenv("TERM"))
、多くの例外があり、Windowsではまったく動作しません(Windowsカラー端末のサポートも取得するためにJANSIライブラリを使用しています)。頭に浮かぶ別のオプションは、外部プログラムを呼び出して、呼び出されたプロセスが実行されているかどうかを確認しようとすることですが、これは汚いハックであり、エッジケースもあります (誰かがターミナルでプログラムを実行しているときに色が消えますエクリプス)。eclipse
端末の種類によって違うかもしれないと仮定して、リフレクションを使ってラッピングしているOutputStream
サブクラスを見つけようとさえしましたが、どうやらそれはどうでもいいことです。System.out
FileOutputStream
組み込みの Eclipse コンソールで Java プログラムが実行されているかどうかを判断するためのハック的ではない方法はありますか?