2012-02-03 18 views
1

私はmavenでJava Webアプリケーションを持っています。
私は私のlog4j.propertiesファイルは、SRC /メイン/リソース下に置かれてきましたし、展開時には、WEB-INF/classesにコピーされます(Mavenの桟橋のプラグインを使用して)開発中にそれを実行するためにmaven jetty plugin log4j configuration

を桟橋を使用しています予想通り。私のlog4j.propertiesで

は、私は、フィルタ変数を定義し、展開したときに、それはまた、実際の値でフィルタリングされるファイル。

(log4j.propertiesのsrc/main/resources; WEB-INF /クラス下log4j.propertiesで

log4j.appender.FILE.File = ${config-gui.log-file} 

(フィルタリングで展開した後に)

log4j.appender.FILE.File = /tmp/mylogfile.log 

私の問題は、私はMVN桟橋を実行したときに、私は次のエラーを取得しています。run

log4j:ERROR setFile(null,true) call failed.<br /> 
java.io.FileNotFoundException: (No such file or directory) 
at java.io.FileOutputStream.openAppend(Native Method) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:177) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:102) 
at org.apache.log4j.FileAppender.setFile(FileAppender.java:289) 
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:163) 
at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:215) 
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:256) 
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:132) 
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:96) 
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:654) 
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:612) 
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:509) 
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:415) 
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:441) 
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:470) 
at org.apache.log4j.LogManager.<clinit>(LogManager.java:122) 
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) 
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) 
at com.pribas.bucherplayerconfiggui.util.LoggerUtil.getLogger(LoggerUtil.java:10) 
at com.pribas.bucherplayerconfiggui.Initialization.<clinit>(Initialization.java:22) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at java.lang.Class.newInstance0(Class.java:355) 
at java.lang.Class.newInstance(Class.java:308) 
at org.mortbay.jetty.webapp.WebXmlConfiguration.newListenerInstance(WebXmlConfiguration.java:649) 
at org.mortbay.jetty.webapp.WebXmlConfiguration.initListener(WebXmlConfiguration.java:630) 
at org.mortbay.jetty.webapp.WebXmlConfiguration.initWebXmlElement(WebXmlConfiguration.java:367) 
at org.mortbay.jetty.plus.webapp.AbstractConfiguration.initWebXmlElement(AbstractConfiguration.java:190) 
at org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:289) 
at org.mortbay.jetty.plus.webapp.AbstractConfiguration.initialize(AbstractConfiguration.java:133) 
at org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222) 
at org.mortbay.jetty.plus.webapp.AbstractConfiguration.configure(AbstractConfiguration.java:113) 
at org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180) 
at org.mortbay.jetty.plus.webapp.AbstractConfiguration.configureWebApp(AbstractConfiguration.java:96) 
at org.mortbay.jetty.plus.webapp.Configuration.configureWebApp(Configuration.java:124) 
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1217) 
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:510) 
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:110) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.plugin.AbstractJettyRunMojo$1.filesChanged(AbstractJettyRunMojo.java:409) 
at org.mortbay.util.Scanner.reportBulkChanges(Scanner.java:493) 
at org.mortbay.util.Scanner.reportDifferences(Scanner.java:359) 
at org.mortbay.util.Scanner.scan(Scanner.java:286) 
at org.mortbay.util.Scanner$1.run(Scanner.java:246) 
at java.util.TimerThread.mainLoop(Timer.java:512) 
at java.util.TimerThread.run(Timer.java:462) 

私はこのエラーはそれのためだと思うが、SRC /メイン/リソースの下にあるlog4j.propertiesファイルを見ている(アペンダのファイルのparamを持っているではありませんWEB-INF/classesよりもむしろ)。

私はSRC /メイン/資源の下で、WEB-INF/classesの下の1を見てlog4j.propertiesファイルを無視するようにMavenの桟橋のプラグインが欲しいです。 どうすればいいですか?

またはこのエラーは関連していない場合、私は持っているアイデアは、どのように私はこの問題を解決することができます

? thxを事前に入力してください。

答えて

8

私は、log4j.propertiesのいずれかがあなたの瓶またはWEB-INF/classesで使用されることはほとんどないと思います。これは具体的なクラスローダの実装(TomcatまたはJetty)に依存し、WEB-INF/classes/log4j.propertiesまたはWEB-INF/libs/yourlib.jar:/log4j.propertiesのいずれかを見ることができます。ここでフィルタリングする必要があります:)

resourcesには<excludes>を設定し、このプロファイルを使用してTomcatデプロイメント用のWebアプリケーションを構築します。

たぶん、より良い解決策は/src/main/resources/log4j-jetty.propertiesから/src/main/resources/log4j.propertiesの名前を変更し、そのリソースを使用する桟橋のプラグイン経由でのLog4jを設定されます。

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>maven-jetty-plugin</artifactId> 
    <configuration> 
     ... 
     <systemProperties> 
      <systemProperty> 
       <name>log4j.configuration</name> 
       <value>log4j-jetty.properties</value> 
      </systemProperty> 
     </systemProperties> 
    </configuration> 
</plugin> 
+0

iは ''タグ内に以下の行を追加して、それを解決します。原因あなたの助けに ' $ {BASEDIR} /ターゲット/クラス/' 、私は答えとしてあなたの応答をマーク;) – saban

関連する問題