我需要在我的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
除了你上面寫的東西:你可能想看看SLF4J,它讓你有機會將許多相關的不同日誌框架(commons logging,log4j,...)合併成一個框架。 – Marged
你可以顯示你當前的log4j.properties文件嗎? – Praminda
我用Update 1添加它 – udani