4

呼び出されているすべてのクラス/メソッド パスをログに記録する log4j の部分を無効にしたいと思います。例えば...

Apr 15, 2013 10:50:52 AM com.production.tasks.ImportNewOrders checkForOrders
INFO: ------- Order #295510
Hibernate: select asset0_.id as id0_, asset0_.AssetID as AssetID0_, asset0_.barcode as barcode0_, asset0_.filename as filename0_, asset0_.orderID as orderID0_, asset0_.Priority as Priority0_, asset0_.qty as qty0_, asset0_.Status as Status0_, asset0_.TimeStamp_Received as TimeStamp9_0_, asset0_.type as type0_, asset0_.URL_Thumb as URL11_0_, asset0_.vendor as vendor0_ from production_queue.3D_Mgmt_v1_Assets asset0_ where asset0_.AssetID=?
Apr 15, 2013 10:51:04 AM com.production.utility.File download
INFO:     - DecoFile downloaded from https://secure-url/165054548?user[id]=xxxxx&key=xxxx to th_1107461838.png
Apr 15, 2013 10:51:17 AM com.production.utility.File download
INFO:     - DecoFile downloaded from https://secure-url/165054548?user[id]=xxxxx&key=xxxx to 1107461838.png
Hibernate: insert into production_queue.3D_Mgmt_v1_Assets (AssetID, barcode, filename, orderID, Priority, qty, Status, TimeStamp_Received, type, URL_Thumb, vendor) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Apr 15, 2013 10:51:17 AM com.production.tasks.ImportNewOrders checkForOrders

私はなりたい...

INFO: ------- Order #295510
Hibernate: select asset0_.id as id0_, asset0_.AssetID as AssetID0_, asset0_.barcode as barcode0_, asset0_.filename as filename0_, asset0_.orderID as orderID0_, asset0_.Priority as Priority0_, asset0_.qty as qty0_, asset0_.Status as Status0_, asset0_.TimeStamp_Received as TimeStamp9_0_, asset0_.type as type0_, asset0_.URL_Thumb as URL11_0_, asset0_.vendor as vendor0_ from production_queue.3D_Mgmt_v1_Assets asset0_ where asset0_.AssetID=?
INFO:     - DecoFile downloaded from https://secure-url/165054548?user[id]=xxxxx&key=xxxx to th_1107461838.png
INFO:     - DecoFile downloaded from https://secure-url/165054548?user[id]=xxxxx&key=xxxx to 1107461838.png
Hibernate: insert into production_queue.3D_Mgmt_v1_Assets (AssetID, barcode, filename, orderID, Priority, qty, Status, TimeStamp_Received, type, URL_Thumb, vendor) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

現在、log4j プロパティ ファイルを構成していません。INFO をそのまま送信したいのですstdoutが、これらのメソッド呼び出しログは避けてください。

アップデート

その後、ファイルを作成しましたlog4j.propertiesが、メソッド呼び出しのログを無効にする設定が見つかりません。

ノート; ログメッセージの「フォーマット」を変更しようとしているわけではありませんが、メソッド呼び出しのログを完全に無効にしています。

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c:%L - %m%n

#prevent "no appenders" warning despite having appenders - http://stackoverflow.com/a/15912258/197606
log4j.category.org.jboss.logging=INFO, stdout

#log4j.category.org.springframework=DEBUG,stdout
log4j.category.com.model.entity =DEBUG,stdout
4

3 に答える 3

1

Appender を構成するためにPatternLayoutを使用している場合は%l、呼び出し元のメソッドを完全修飾名で出力するを削除する必要があります。レイアウトは次のようになります。

PatternLayout layout = new PatternLayout("%-5p %m");//Level and Message

ただし、次のようなタイムスタンプを入れることをお勧めします。

%d{dd MMM yyyy HH:mm:ss,SSS}

于 2013-04-17T20:53:14.603 に答える
1

外部で log4j プロパティ ファイルをセットアップしていない場合は、アプリ内の一部のコンポーネントがプログラムで構成されています。いずれにせよ、現在の構成を本当に必要なもので上書きする必要があります。これを行う最も簡単で管理しやすい方法は、有効なプロパティ ファイルを作成し、それをクラス パスに配置することです。そうすることで、既存のロガーの構成を上書きするだけでなく、新しいロガーを定義することもできます。

必要に応じて、Log4J 構成をプログラムで変更することもできます。スタートアップ クラスの静的イニシャライザを使用すると、最も簡単に実現できます。簡単な例:

public class LogTest {
    private static final Logger logger = Logger.getLogger(LogTest.class);
    static {
        Logger.getRootLogger().getLoggerRepository().resetConfiguration();
        ConsoleAppender console = new ConsoleAppender();
        console.setLayout(new PatternLayout("%-5p %m%n"));
        console.setThreshold(Level.TRACE);
        console.activateOptions();
        Logger.getRootLogger().addAppender(console);
    }

    @Test
    public void testLogging() throws Exception {
        logger.info("I am a simplistic info log message");
        logger.error("I am a simplistic error log message",
                new IllegalArgumentException());
    }
}
于 2013-04-21T09:57:32.693 に答える