2016-05-31 9 views
0

テスト自動化の実行中にログを書き込むためにlog4jを使用しています。スタックオーバーフローの取得log4jを使用してログを書き込むときのエラー

public class Log { 

private static Logger Log = Logger.getLogger(Log.class.getName()); 

public static void info(String message) 
{ 
    Log.info(message); 
} 

} 

をしかし、私はそれを使用するたびに、スタックオーバーフローエラーが以下のようにスローされます:

Log.info("Click action is performed on My Account link"); 

エラー:メソッドを呼び出す

ここ

はログイン書くための私の方法です。

java.lang.StackOverflowError at 
helpers.Log.info(Log.java:21) at 
helpers.Log.info(Log.java:21) at 
helpers.Log.info(Log.java:21) at 
helpers.Log.info(Log.java:21) 

誰でも助けてくれますか?

+2

ヒント:非常に異なるオブジェクトやクラスのすべての場所で非常に同じ名前を使用することは本当に悪い考えです。あなたが直面しているような興味深い問題につながる可能性があるので...今すぐ。その他:Javaコーディングスタイルの規則についてお読みください。たとえば 'Logger'オブジェクト' logger'を呼び出した場合( 'Log'を呼び出すのではなく、この問題も回避したでしょう)だから:フィールド/メンバー名は小文字で始まる! – GhostCat

答えて

0

私は、log4j.propertiesファイルの設定を参照していけません。これを試してみてください

import org.apache.log4j.Logger; 
import org.apache.log4j.xml.DOMConfigurator; 
public class Logs { 

    public static Logger Application_Log = Logger.getLogger(Logs.class.getName()); 

    public Logs(){ 
     DOMConfigurator.configure("log4j-config.xml"); 
    } 
public void info(String message){ 
     Application_Log.info(message); 
    } 
+0

こんにちはkarthick23 私はlog4j.propertiesファイルを使用せず、代わりにlog4j.xmlを使用します。以下は、私のファイルは、次のとおりです。 \t <アペンダ名= "fileAppender" クラス= "ORG .apache.log4j.FileAppender "> \t \tます。 \t \tます。 \t \t <レイアウトクラス= "org.apache.log4j。/> \t \t \t \t \t \t PatternLayoutは "> \t \t \tます。 \t \t <アペンダ-REF REF = "fileAppender" /> \t

+0

設定それはね、コード – karthick23

+0

を更新しました動作しなくなるまで、StackOverflowErrorを返します。 –

1

クラスinfo(String)メソッドではなく、Loggerのメソッドinfo(String)ではなく、Logと呼ばれています。

Log.Log.infoを代わりに使用するか、Logクラスの名前を変更するか、Logメンバ変数の名前を変更してください。

これは、Javaの命名規則に従うことを理由の1つです。

+0

ログメンバ変数の名前をlog 'package helpers;に変更しようとしました。インポートorg.apache.log4j.Logger; public class Log { プライベートスタティックロガーlog = Logger.getLogger(Log.class.getName()); public static void info(文字列メッセージ) { ; log.info(メッセージ); } } ' まだ問題が発生しています。あなたは助けてもらえますか? @Andy Turner –

関連する問題