Мне нужно добавить точки отладки в 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
Кроме того, что вы написали выше: вы можете захотеть взглянуть на SLF4J, который дает вам возможность объединить множество релевантных различных фреймворков регистрации (commons logging, log4j, ...) в одну единую структуру. – Marged
Можете ли вы показать текущий файл log4j.properties? – Praminda
Я добавляю его с Update 1 – udani