调整apache commons日志记录的日志级别?

时间:2011-02-15 21:23:05

标签: java java.util.logging apache-commons-logging

我有一个简单的控制台应用程序,它使用apache的PDFBox库,后者又使用commons日志记录。我在我的控制台中收到了很多垃圾邮件,我想压制它们:

  

2011年2月15日下午3:56:40 org.apache.pdfbox.util.PDFStreamEngine processOperator   信息:不支持/禁用操作:EI

在我的代码中,我试图重置日志级别无效:

Logger.getLogger("org.apache.pdfbox.util.PDFStreamEngine").setLevel(Level.OFF);
Logger.getLogger("org.apache.pdfbox.util").setLevel(Level.OFF);
Logger.getLogger("org.apache.pdfbox").setLevel(Level.OFF);

尽管有这些设置,但消息仍会显示在控制台上。从Commons日志记录中检索日志对象也没有帮助,因为它似乎没有办法设置级别。

有没有办法以编程方式抑制这些消息?或者我是否需要添加配置文件?

4 个答案:

答案 0 :(得分:5)

Commons-logging只是一个logging-facade,这意味着它不提供实际将logdata写入例如磁盘的代码。您需要更改的是实际日志记录实现的配置(例如logbacklog4jsl4fj等)。如果未找到此类库,则默认为java.util.logging

我建议在类路径中添加例如log4j,并在类路径中添加log4j.xml配置文件。在这种情况下,类路径中仅存在log4j足以初始化它。 Log4j也可以配置为programmatically

答案 1 :(得分:2)

这对我有用:

String[] loggers = { "org.apache.pdfbox.util.PDFStreamEngine",
        "org.apache.pdfbox.pdmodel.font.PDSimpleFont" };
for (String logger : loggers) {
  org.apache.log4j.Logger logpdfengine = org.apache.log4j.Logger
         .getLogger(logger);
  logpdfengine.setLevel(org.apache.log4j.Level.OFF);
}

答案 2 :(得分:1)

Apache commons-logging使用下面的一些其他日志框架(java.util.logging或Log4J),您必须调查它在项目中使用哪一个并在那里设置正确的日志记录级别。

答案 3 :(得分:1)

如果您没有时间弄清楚Apache commons-logging在下面使用哪个Logging实现,请尝试禁用类路径中的所有实现。下面的代码测试了三个实现。

如果任何行没有编译,请不要添加依赖项!只需删除该行。

//
`timescale 1ns / 1ps
//Moore Finite State Machine Lab 3
// 
// WORKING, needs Screen output

module moore(
    input BTNC,    //manual clk
    input SW0,     //clr
    input SW1,    
    input SW2,     
    input SW3,    
    input SW4,
    output reg [3:0] LED,    //z
    reg [2:0] y,Y
    );
    localparam S_00=3'b000, S_01=3'b001, S_02=3'b010,
               S_03=3'b011, S_04=3'b100;

//Define next state
    always @(y,SW0,SW1,SW2,SW3,SW4)
    begin
            case (y)
                S_00: if (SW1)      Y <= S_01;
                      else          Y <= S_00;
                S_01: if (SW1)      Y <= S_02;
                      else if (SW3) Y <= S_03;
                      else          Y <= S_01;
                S_02: if (SW1)      Y <= S_04;
                      else          Y <= S_02;
                S_03: if (SW2)      Y <= S_04;
                      else if (SW3) Y <= S_02;
                      else          Y <= S_03;
                S_04: if (SW2)      Y <= S_02;
                      else if (SW4) Y <= S_00;
                      else          Y <= S_04;
                      default:      Y <= 3'bxxx;
            endcase
        end 

    //Define state update
    always @(SW0, BTNC)
       begin
        if (!SW0) y <= S_00;
        else y <= Y;
       end  

    //Define output
    always @(y)
        if (y==S_00)
            begin 
            assign LED = 3'b000;
            end
        else if (y==S_01)
            begin
            assign LED = 3'b001;
            end
        else if (y==S_02) 
            begin
            assign LED = 3'b010;
            end
        else if (y==S_03)
            begin 
            assign LED = 3'b011;
            end
        else if (y==S_04)
            begin 
            assign LED = 3'b100;
            end
        else
            begin 
            assign LED = 3'b000;  //not used
            end
endmodule // lab3ht codename moore