2015-12-15 7 views
1

Мне нужно добавить точки отладки в javaagent. У меня есть мой метод premain в одном классе и AgentClassFileTransformer в другом классе. Поскольку моя организация использует следующий подход, который использует пакет org.apache.commons.logging, я также попытался использовать этот метод.Как добавить журналы в java-агент, где уровень журнала можно динамически изменять

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

Но, если я добавляю только log4j.properties файл в папку ресурсов проекта, он печатает журналы из класса с premain методом.

Но для класса, который реализует ClassFileTransformer, он говорит, что никаких приложений не найдено. Но, опять же, если я добавлю файл commons-logging.properties в ту же папку ресурсов, он распечатает все журналы, необходимые в консоли. (Даже если я использую регистратор типа log4j следующим образом, она по-прежнему говорит, что никакие appenders не могут быть найдены для трансформатора класса)

Commons-logging.properties

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

Предупреждение для класса Transformer

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). Но поскольку я использую LogFactory Commons-logging, он не дает возможности устанавливать уровень. Поэтому я хотел бы получить некоторые предложения о том, как преодолеть эту ситуацию.

Как я могу заставить это работать? Это что-то, что может быть достигнуто, или мне нужно изменить механизм ведения журнала?

Update 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. Но все же он говорит, что для org.javaagent.instrumentation не найдено ни одного приложения .InstrumentationClassTransformer – udani