2016-05-31 6 views
0

Ich verwende log4j zum Schreiben von Protokollen, wenn Testautomatisierung ausgeführt wird.Stapelüberlauffehler beim Schreiben des Protokolls mit log4j

Hier ist meine Methode log zu schreiben:

public class Log { 

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

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

} 

Aber immer, wenn ich es verwenden, wird der Stack-Überlauf-Fehler wie unten geworfen:

Aufruf der Methode:

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

Fehler:

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) 

Kann mir bitte jemand helfen?

+2

Hinweis: die Verwendung der gleichen Namen überall für sehr unterschiedliche Objekte und Klassen ist eine wirklich schlechte Idee; weil es zu so interessanten Problemen führen kann, wie Sie es gerade tun ... gerade jetzt. Außerdem: bitte lesen Sie über Java-Kodierung Stil Konventionen. Hätten Sie beispielsweise Ihren 'Logger'-Objekt' Logger' aufgerufen (anstatt ihn 'Log' zu nennen, hätten Sie dieses Problem ebenfalls vermieden). Also: Feld-/Elementnamen beginnen mit Kleinbuchstaben! – GhostCat

Antwort

0

Ich sehe nicht die Konfiguration für die Datei log4j.properties. versuchen Sie dies

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

Hallo @ karthick23 Ich verwende nicht log4j.properties Datei, sondern mit log4j.xml statt. Im Folgenden finden Sie meine Datei: \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t < level value = "INFO" /> \t \t \t

+0

xml zu verwenden, sollten Sie DOMConfigurator verwenden haben den Code aktualisiert – karthick23

+0

Es s bis es nicht funktioniert, der StackOverflowError. –

1

Sie rufen Ihre Klasse info(String) Methode, nicht die info(String) Methode: Ihre Klasse wird auch Log genannt.

Verwenden Sie stattdessen Log.Log.info - oder benennen Sie Ihre Log Klasse um, oder benennen Sie Ihre Log Mitgliedsvariable um.

Dies ist ein Grund, den Java-Namenskonventionen zu folgen.

+0

Ich habe versucht, die Log-Member-Variable zu loggen 'Paket Helfer; import org.apache.log4j.Logger; public class Protokoll { private static Loggerprotokoll = Logger.getLogger (Log.class.getName()); public static void info (String-Nachricht) { log.info (Nachricht); } } ' Aber immer noch ein Problem. Können Sie bitte helfen? @Andy Turner –

Verwandte Themen