2016-05-31 360 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

Hi @ karthick23 我不使用log4j.properties文件,而是使用log4j.xml代替。下面是我的文件: \t \t \t \t \t \t \t <布局类=“org.apache.log4j。的PatternLayout “> \t \t \t \t \t \t \t \t \t <电平值= “INFO”/> \t \t <附加器-REF REF = “fileAppender”/> \t

+0

使用XML应该使用DOMConfigurator已经更新了代码 – karthick23

+0

它那直到不工作,StackOverflowError。 –

1

您正在调用您的班级'info(String)方法,而不是Loggerinfo(String)方法:您的班级也被称为Log

使用Log.Log.info代替 - 或重命名Log类,或重命名Log成员变量。

这是遵循Java命名约定的原因之一。

+0

我试着重命名Log成员变量来记录 'package helpers; import org.apache.log4j.Logger; public class Log private Logger log = Logger.getLogger(Log.class.getName()); public static void info(String message) { log.info(message); } }' 但仍然有问题。你能帮忙吗? @Andy Turner –