使用配置的log4j跟踪日志中的类

时间:2012-05-24 16:40:53

标签: java log4j

我有一个查询可以说我已经开发了一个简单的类......

    class Simple
    {
public static void main(String args[])
    {
    System.out.println("I am a good bouy");
    }
    }

现在在我的应用程序的前端让我们说有50个其他类也被执行了,我已经配置了Log4j来跟踪现在日志中的日志我只是想知道什么时候我上面的类得到执行然后我应该怎么做输入这个类,这样我就可以跟踪日志,并且知道此时我的上面的类被执行..这是log.info(“在Simple类中”);

2 个答案:

答案 0 :(得分:1)

在此示例之前省略所有其他需要解决的事情将是非常有用的,您所要做的就是修改日志配置,它会在您打印出来时为您打印类和行记录消息。

我不愿意说它引起它的陈词滥调,但RTFM是最好的方法。此页面将告诉您最开始所需的一切:

http://logging.apache.org/log4j/1.2/manual.html

您需要的只是记录器的特定ConversionPattern配置选项,每次记录消息时它都会记录类名甚至行信息。以下是该页面的示例:

// Import log4j classes.
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

// log4j.appender.console.layout.ConversionPattern=%d{yyyyMMdd HH.mm.ss} %-5p %C.%M(%L): %m%n

class Simple
{
    static Logger logger = Logger.getLogger(Simple.class);

    protected static void doIt()
    {
        logger.info("oh yea, we're doing it!");
        logger.error("  f-you! joe Boy, you are done!");
        logger.fatal("and the world went to bed");
    }

    public static void main(String[] args)
    {
        // BasicConfigurator replaced with PropertyConfigurator.
        PropertyConfigurator.configure(args[0]);

        logger.info("Entering application.");
        doIt();
        logger.info("Exiting application.");
    }
}

,在构建和运行时产生以下内容:

14:39:56:--> java -classpath log4j-1.2.15.jar:. Simple log4j.properties 
20120623 14.41.17 INFO  Simple.main(17): Entering application.
20120623 14.41.17 INFO  Simple.doIt(24): oh yea, we're doing it!
20120623 14.41.17 ERROR Simple.doIt(25):   f-you! joe Boy, you are done!
20120623 14.41.17 FATAL Simple.doIt(26): and the world went to bed
20120623 14.41.17 INFO  Simple.main(19): Exiting application.

当你使用这样的转换模式时:%d {yyyyMMdd HH.mm.ss}%-5p%C。%M(%L):%m%n

以下是一些更具体的内容:

1. get a copy of log4j jar and put it in directory
2. create Simple.java in directory
3. create a file log4j.properties in same directory, put this in file:

log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyyMMdd HH.mm.ss} %-5p %C.%M(%L): %m%n

4. compile Simple.java with: javac -classpath log4j-1.2.15.jar:. Simple.java
5. run it with this: java -classpath log4j-1.2.15.jar:. Simple log4j.properties

答案 1 :(得分:0)

我们曾经这样做来跟踪应用程序何时失败。 (如果我正确理解你的问题)我们会提供某种类型的日志记录,这样我们就可以跟踪它并确切地看到它是如何失败的,以及何时由于一系列事件。有点像审计线索。我们会提供以下内容。

class Simple
{
    public static void main(String args[])
    {
        log.info("Entering " + this.getClass().getName());
        System.out.println("I am a good bouy");
        log.info("Exiting " + this.getClass().getName());
    }
}

当然你也可以把方法名称放在那里。取决于您的类和方法的执行方式。