簡體   English   中英

如何禁用日志記錄調用路徑

[英]How to disable logging call paths

我想禁用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

那些不是log4j調用。 你所看到的是默認的java.util.logging模式(到stderr)。 所以你需要適當地配置java.util.logging。 請參見http://tutorials.jenkov.com/java-logging/configuration.html

如果您使用PatternLayout配置Appender,則應刪除使用完全quallified名稱輸出調用方法的%l 你的布局應該是這樣的:

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

但是我建議在某種時間戳上添加一些:

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

如果您沒有在外部設置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());
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM