2013-07-08 44 views
2

我已經花了很多時間閱讀關於log4j和它可以實現的不同方式在stackoverflow上的帖子。我決定採用log4j.properties的方法。我仍然在運行到問題時,我從Eclipse中運行,或從螞蟻用:log4j.properties配置問題以及螞蟻配置

log4j:WARN No appenders could be found for logger (My.Class). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

我做了兩件事情迄今:

  • 在創建的根目錄下的log4j.properties文件/ src文件夾
  • 將log4j.properties文件移動到存在.java文件的包中。

這兩個實例都會產生相同的問題。這裏是我用我的類代碼:

private static Logger log = Logger.getLogger(My.class); 

我看了一遍又一遍的屬性文件需要在類路徑中。我覺得我已經做到了,但也許沒有。這是我的封裝結構:

SRC

  • 程序包A

    • myclass.java

    • log4j.properties(嘗試2)

  • packageB

  • packageC
  • 包裝
  • log4j.properties(未遂1)

讓我指出我想所有的軟件包每個Java文件中使用相同的log4j.properties。如果有更簡單的方法來配置這個冗餘的應付道具文件,讓我知道。我想我必須切換到使用資源加載器。

移動到我的螞蟻問題:

我有相同的問題螞蟻。我已經添加了我認爲我需要從我在apache網站上閱讀的內容中獲得ant運行w/o問題,但無濟於事。

這裏是我的目標編譯其他項...

<path id="classpath"> 
    <fileset dir="${lib.dir}" includes="**/*.jar"> 
     <include name="**/*.properties"/> 
    </fileset> 
</path> 

<target> 
<javac srcdir="${source.dir}" destdir="${classes.dir}" classpathref="classpath" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"/> 
<copy todir="${classes.dir}"> 
    <fileset dir="${source.dir}" excludes="**/*.java"/> 
</copy> 
</target> 

我也應該注意到我的JUnit目標有包括類路徑。

我也嘗試將-Dlog4j.configuration = file:/路徑添加到文件中,然後我仍然看到警告......我不知所措。

我的印象是這樣會將我的.properties文件複製到ant的類路徑中。

回答

0

用於螞蟻我增加:

<path id="properties"> 
    <dirset dir="${config.dir}"/> 
</path> 

其中$ {config.dir}是路徑到其中log4j.properties存在/ SRC/config文件夾。

仍然在使eclipse工作,它不應該與eclipse中的類路徑太不同。

謝謝!

+0

是的,要選取需要將目錄添加到類路徑的文件。另一種做法是ANT路徑中的pathelement聲明。在一個無關的問題結帳SLF4J和Logback。 –

0

我發現我的log4j.properties必須位於類路徑的根目錄下。 由於我的classpath src包含了applybc2014包中的測試代碼,所以我把log4j.properties放在那裏。請注意,我也只排除了java文件。

<property name="src.dir"  value="src/ca/bccampus/tests/applybc2014"/> 

<target name="compile"> 
    <mkdir dir="${classes.dir}"/> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" classpathref="classpath"/>   
    <copy todir="${classes.dir}"> 
     <fileset dir="${src.dir}" excludes="**/*.java"/>    
    </copy> 
</target>