1
我有一個自定義的log4j佈局類,它擴展了PatternLayout,我的佈局類只是在日誌中掩蓋了密碼。它工作在一個簡單的控制檯應用程序這裏的的log4j.xml定製log4j佈局類不被稱爲
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="A1" class="org.apache.log4j.ConsoleAppender">
<layout class="com.PortalLog4jFilteringPattern"> <param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/> </layout>
</appender>
<root>
<priority value ="DEBUG" /> <appender-ref ref="A1" />
</root>
</log4j:configuration>
這裏的佈局類的snipet:
public class PortalLog4jFilteringPattern extends PatternLayout {
// omitted
@Override
public String format(LoggingEvent event) {
System.out.println("in format()...... ");
// rest omitted
下面是調用代碼:
import org.apache.log4j.Logger;
public class ProductDemo {
private static Logger logger = Logger.getLogger(ProductDemo.class);
public ProductDemo() {
}
public void processOrder(CustomerOrder order) {
logger.info(order.getProductName());
}
// rest ommited
了樣本結果日誌與PSWD被屏蔽:
main INFO test.ProductDemo - "password":"*****"},
但是,一旦我將銅stom layout class到我的webapp(log4j.xml是完全一樣的),它不會被調用(即沒有System.out輸出)並且pswd仍然顯示。我用這個CMD上碼頭行家本地運行web應用程序:命令mvn碼頭:運行
下面是調用代碼:
// original code, but I changed it to import org.apache.log4j.Logger for experiment
//import org.slf4j.LoggerFactory;
//import org.slf4j.Logger;
import org.apache.log4j.Logger;
public class BlahBlahClass extends Blah
// things omitted
private final static Logger log = Logger.getLogger(BlahBlahClass .class);
任何想法?謝謝
只是一個想法,但也許碼頭管道stdout別的地方,你沒有看到它? – 2012-01-03 22:42:46