Фреймворк ведения журнала на основе инструментария для Java - PullRequest
1 голос
/ 29 ноября 2011

Я пытаюсь отследить проблему в одном из моих Java-проектов, и в настоящее время я сталкиваюсь с возможностью вручную добавить lot операторов ведения журнала ко всей группе методов. Как вы, наверное, понимаете, мне не очень нравится эта идея:

  • Большинство этих методов являются критичными для производительности, и я бы не стал добавлять протоколирование, когда оно не нужно, даже если это что-то более легкое, чем log4j .

  • В некоторых случаях я хотел бы регистрировать операции классов из библиотеки Java. Хотя исходный код OpenJDK доступен, я не собираюсь предоставить собственную версию библиотеки Java только для этого.

  • Я заинтересован в регистрации определенных путей кода при определенных условиях. Хотя я мог бы, вероятно, централизовать проверки применимости журналирования, я все же предвидел непредвиденный рефакторинг в будущем, если мне потребуется изменить условия.

  • Добавление операторов регистрации в массовом порядке требует лот работы и времени, которые я бы предпочел использовать более продуктивно.

Учитывая существование библиотек манипулирования байт-кодом, таких как Javassist и BCEL , я надеялся, что может существовать структура ведения журналов, которая избавит меня от рутинной работы.

Поскольку я в основном интересуюсь аргументами вызова методов и возвращаемыми значениями при определенных условиях, существует ли основанная на инструментарии система ведения журналов для Java, которая позволила бы мне это сделать? Желательно что-то более современное и немного менее неловкое, чем Java-агенты ?

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Ведение журнала - это «привет мир» аспектно-ориентированного программирования.

Если вы уже являетесь пользователем Spring, вы сможете написать один класс аспектов, чтобы записывать то, что вы хотите, а затем плести.он декларативно распространяется на все объекты, которые в этом нуждаются.

Spring имеет собственную реализацию AOP;он также поддерживает AspectJ.

Вы можете использовать AspectJ без Spring, если вы этого хотите.

0 голосов
/ 23 августа 2013

Попробуйте этот инструмент с открытым исходным кодом: http://code.google.com/p/perfspy/. Это средство ведения журналов во время выполнения, мониторинга производительности и проверки кода. Он использует ApsectJ для обхода кода вашего приложения во время выполнения и регистрирует время выполнения каждого метода и его входные параметры и значения. Он имеет приложение пользовательского интерфейса, в котором вы можете просматривать вызовы методов и их входные и возвращаемые значения в виде деревьев. С его помощью вы можете обнаружить узкие места в производительности и понять сложный поток кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...