2015-12-15 25 views
1

我需要在我的javaagent中添加調試點。我在一個課程中使用我的premain方法,在另一個課程中使用我的AgentClassFileTransformer。由於我的組織使用以下方法使用org.apache.commons.logging軟件包,我也嘗試使用該方法。如何將日誌添加到日誌級別可以動態更改的java代理程序

private static final Log log = LogFactory.getLog(InstrumentingAgent.class);

但是,如果我只添加log4j.properties文件到項目的資源文件夾,它與倍美力方法的類打印日誌。

但是對於執行ClassFileTransformer的類,它說沒有找到appender。但是,如果我將commons-logging.properties文件添加到相同的資源文件夾,那麼它將打印控制檯中所需的所有日誌。 (即使我使用log4j的類型的記錄如下,還在說沒有追加程序可用於變壓器類中找到)

Commons-logging.properties

org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger 

警告變壓器類

log4j:WARN No appenders could be found for logger (InstrumentationClassTransformer). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

在我的情況下,我將在我的代理中添加調試級別日誌。但是,當代理與產品一起運行時,它不應該在控制檯上打印調試日誌。在log4j方面,我已經閱讀了關於使用setLevel(Log.level)方法設置記錄器的日誌級別。但是因爲我使用的是commons-logging的LogFactory,所以它也沒有提供任何設置這個級別的選項。所以我想就如何克服這種情況提出一些建議。

我該如何得到這個工作?這是可以實現的,還是我需要改變日誌記錄機制?

更新1

我甚至增加了包名,由madhawa提及,但它仍然不打印ClassFileTransformer的日誌。

log4j.rootLogger=DEBUG, console 
log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n 

log4j.logger.org.javaagent.instrumentation=DEBUG 
+0

除了你上面寫的東西:你可能想看看SLF4J,它讓你有機會將許多相關的不同日誌框架(commons logging,log4j,...)合併成一個框架。 – Marged

+0

你可以顯示你當前的log4j.properties文件嗎? – Praminda

+0

我用Update 1添加它 – udani

回答

0

看來你還沒有正確配置log4j.properties文件。請添加相關的軟件包並重試。

+0

我添加更新1中給出的軟件包名稱。但仍然表示沒有appender可以找到org.javaagent.instrumentation.InstrumentationClassTransformer – udani

相關問題