4

SwingGUIを起動する実行可能JARがあるとします。コンソールから起動された場合(たとえばjava -jar myapp)、コンソールはアプリケーションによっても使用されます(つまり、ログが印刷されます)。このロギングには少し時間がかかりますが、かなり冗長です。

私はJARしか持っておらず、ソースは持っていないことに注意してください。

質問: JARをダブルクリックして実行するとどうなりますか?明らかにログは表示されませんが、単に非表示になっているのでしょうか、それとも(ログをスキップすることで)アプリケーションのパフォーマンスが実際に向上するのでしょうか。

4

4 に答える 4

4

コンソールを表示したくない場合は、javawの代わりにを使用してプログラムを起動しjavaます。だからあなたは実行します:javaw -jar myapp.jar

于 2012-12-30T08:46:07.530 に答える
3

ロギングを停止する場合は、でロギングをオフにすることができますLogger#setLevel(Level.OFF)(標準のロガーを使用していると仮定します)。ログメッセージの冗長性を減らすことを目的としている場合は、たとえばLevel.WARNINGを使用できます。この場合、WARNINGメッセージとSEVEREメッセージのみがログに記録されます。通常、ログに記録される最小レベルは任意のレベルに設定できます。アプリがコンソールなしで起動された場合、通常はConsole接続されていません(ただし、これはプラットフォームの問題だと思います。たとえば、一部のプラットフォームでは中央コンソールが提供される場合がありますが、Java Webアプリはサーブレットコンテナで実行されますが、コンテナはコンソールから開始した場合、通常はコンソールが接続されていないため、何らかの理由でコードを賭けることはありません。それでも、添付されていないアプリでログが必要な場合Console実行時に、を使用してログメッセージをファイルにいつでもリダイレクトできますLogger#addHandler(FileHandler)

于 2012-12-30T08:51:10.373 に答える
2

通常System.out.println()、ロギングには適していません。これはIO操作であり、時間がかかります。オフにする必要がある場合は、コードで手動でコメントする必要があります。

log4jまたはjavaLoggerを使用します。

于 2012-12-30T08:58:01.513 に答える
1

System.out.prinln()プロセスの出力ストリームに出力します。JVMは、出力が実際にどこに行くのかを知らず、気にしません。それはコンソールであるか、ファイルにリダイレクトされるか、別のプロセスにパイプされるか、どこにも送信されない可能性があります。命令はブロッキング操作であるため、命令にかかる時間は実際にどこに行くかによって異なります。コンソールへの印刷はファイルへの印刷よりも遅く、ファイルへの印刷はどこにも印刷するよりも遅くなります。

于 2012-12-30T12:22:40.027 に答える