0

簡単なクラスを開発したとしましょう...

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

アプリケーションのフロント レベルで、実行される他の 50 のクラスがあるとします。ログを追跡するように Log4j も構成しました。上のクラスがいつ実行されるかを知りたいだけです。ログを追跡し、この時点で上記のクラスが実行されることを知ることができるように..それは log.info("inside Simple class"); です。

4

2 に答える 2

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
于 2012-06-23T19:55:46.383 に答える
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());
    }
}

もちろん、そこにメソッド名を入れることもできます。クラスとメソッドの実行方法に正確に依存します。

于 2012-05-25T02:35:14.273 に答える