2016-11-08 6 views
0

私はWebサービスプロジェクトを持っており、プロジェクトパスに関連したロガーファイルパスを定義するためにプロジェクトのルートパスを取得したいと考えています... 私はこのコード部分を知っていますそれが働くかどうかは分かりません...?プロジェクトパスの横にあるサーバー上のロガーパス

public void contextInitialized(ServletContextEvent event) { 
    ServletContext context = event.getServletContext(); 
    System.setProperty("rootPath", context.getRealPath("../Logs/")); 
} 

コード

の後、ロガーの一部

log4j.appender.file.File=${rootPath}WEB-INF/logs/TecnichalLog.log log4j.appender.file.File=${rootPath}WEB-INF/logs/PerformanceLog.log

注:私は${catalina.base}を使用することができなかったので、私が埋め込まTomcatを使用しています...

答えて

0

ありがとうプロジェクト内からの相対パスを使用する方が優れています。パスは、tomcatが起動するフォルダからの相対パスです。通常は/ bin /です。 または、ランタイム環境がわかっていて、すべてのノードで一貫性がある場合は、絶対パスの使用に間違いはありません。

+0

私は埋め込み型のTomcatを使用していますが、プロジェクトは多くの異なる環境に移動するため、コンテキストを使用してパスを宣言します。 –

+0

プロパティrootPathは実行時にのみ使用できます。だから、それ以降はlog4jアペンダーをプログラムで設定することができます。この時点までコンソールアペンダーを設定して、起動ログを失わないようにすることができます。 – jay

+0

いいえ!私はいつでも私が望むときにプロパティを書くことができます**しかし、**問題は、プロジェクトは、編集やXMLファイルやプロパティなしでのみ配備する他の人によって展開されることです、私ができる唯一のことは、プロジェクトは戦争ファイルの近くにLog.fileを生成します... –

関連する問題