2011-06-29 8 views
4

これを読む前に、私は未知のJava領域のPython開発者であることを知っておくべきです。Javaでログインするためのプロパティを設定する

Javaのログを設定しようとしています。私はlogging.propertiesを設定すると動作させることができました。このように:

$ /usr/bin/java -server -Xmx512m -Djava.util.logging.config.file= /path/to/logging/file/logging.properties -jar start.jar 

logging.propertiesファイルは、リビジョン管理にチェックインされ、私の現在のセットアップですべての環境で使用されることになるので、私はlogging.propertiesにハードコードlogging.FileHandler.patternにしたくありませんファイル。

$ /usr/bin/java -server -Xmx512m -Djava.util.logging.config.file= /path/to/logging/file/logging.properties -Djava.util.logging.FileHandler.pattern=/var/log/project_name/solr/solr.log -jar start.jar 

しかし、FileHandler.patternが認識されていなかったようですので、ファイルが書いたことはありません:だから、私はこれを行うことによって、コマンドラインにそれを移動しようとしました。ですから、logging.propertiesファイルを捨て、コマンドラインですべてをスローしようとしましょう。だから、私はこれを試しました:

$ /usr/bin/java -server -Xmx512m -Djava.util.logging.Handler=java.util.logging.FileHandler -D.level=WARNING -Djava.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter -Djava.util.logging.FileHandler.pattern=/var/log/project_name/solr/solr.log -jar start.jar 

しかし、それもうまくいきませんでした。それで、私は助けを求めています。

3つの質問:

  1. は、なぜ第二の例は、私が仕事を提供していないのですか?
  2. なぜ私は仕事を提供した3番目の例はありませんでしたか?
  3. logging.propertiesファイルがバージョンコントロールにチェックインされ、共有ファイルであるため、これにはどのようなアプローチが適していますか?ベストプラクティスは何ですか?

返信する際には、Java初心者のために小さな言葉を使用してください。 :-)

答えて

2

-Dxyz.blahbla.bla=foobarは、システムプロパティで、あなたが欲しいものは何でも置くことができるにもかかわらずと、そのプロパティを要求します一部コードが存在しますので、ないすべてが、システムプロパティとして使用することができ、誰もそれを読むことはありません。例えば

、このコードを試してみてください。

class HelloSystemProperty { 
    public static void main(String ... args) { 
     System.out.println(System.getProperty("getIt")); 
     } 
} 

をそして、好きなことを実行します。

だから、
java -DgetIt=Yeah HelloSystemProperty 

、あなたは今、あなたはちょうど行くと行く何かを置くことができないことで推測することとしてそのファイルにシステムのプロパティとしてUNLESSを読んで、それをあなた自身に読んでそれに応じて処理します。

システムプロパティとして手作業でログレベルを変更する必要がある場合は、add code to read that property and set the valuesにすることができますが、あまりにも多すぎるため、そこに行きたいかどうかわかりません。

ようにファイルを使用すると、私はこれが役に立てば幸い十分

でなければなりません。

1

パターンに実行時に置き換えられるトークンが含まれる可能性があるため、「FileHandlerパターンのハードコーディング」はそれほど悪いことではありません。私は%tがシステムの一時ディレクトリ(/ var/tmpやC:\\ TEMPなど)であると考えているもので置き換えられたことを知っています。%hはユーザのホームディレクトリです。

これらのうちのいくつかを使用する場合、パターンは十分に一般的なので、スーパーにしようと心配する必要はありません。ポータビリティのために一般化する

関連する問題