|
|
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
Добрый вечер, господа. Заполз ко мне в голову один умный таракан, я подумал, что если в проекте подключить AspectJ для логирования? Надоели в коде куски типа LOG.debug(...). Правильно я понимаю, что с помощью AspectJ можно необходимое множество методов расширить таким образом, чтобы они логировались на входе и выходе? Тогда часть сквозного функционала по логированию уйдет. Местами я использую интерсепторы для логирования Stateless бинов. Но не одними Stateless бинами живет наше приложение и существует множество классов, на которые повешать интерсепторы нет возможности. Их приходится логировать вручную на входе и выходе, что, конечно же, доставляет. На сколько я знаю, AspectJ работает без рефлексии и следовательно не сказывается негативно на производительности. Смущает только один момент - где-то слышал, что AspectJ - как черный ящик: что он и как делает с байт-кодом - одному ему известно. И в продакшн может идти страшно после модификаций байткода AspecjJ. Теперь собственно вопрос: какие есть подводные камни с AspectJ, может кто-нибудь обжегся чем-нибудь? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2012, 18:30:52 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
AOP для логирования не очень подходит. IMO логирование кода это вещь достаточно интелектуальная. AOP подходит для трасировки. Вызов метода с такими параметрами, на выходе результат такой-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 02:20:52 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
rabiter, У нас в проекте Spring AOP используется для сбора бизнес-событий - то бишь тоже нужно нырнуть в параметры, убедиться что все нужные параметры имеются в контексте, и сохранить в базу. Версия АОП от спринга - весьма усеченная и не позволяет некоторых трюков, на которые способен полноценный AspectJ - но для большинства задач вполне хватит. Никакой черной магии - все отлично работает в продакшене. Спринговые штучки для управления транзакциями наверняка же используете - тот же подход для оборачивания вашего метода методом эдвайса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 05:52:49 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
vas0, Спасибо за ответ. Да, хотя бы от трассировки от ручной избавиться (так называемый invoke around аспект если не ошибаюсь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 14:59:13 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
Kostya Ilyinovrabiter, У нас в проекте Spring AOP используется для сбора бизнес-событий - то бишь тоже нужно нырнуть в параметры, убедиться что все нужные параметры имеются в контексте, и сохранить в базу. Версия АОП от спринга - весьма усеченная и не позволяет некоторых трюков, на которые способен полноценный AspectJ - но для большинства задач вполне хватит. Никакой черной магии - все отлично работает в продакшене. Спринговые штучки для управления транзакциями наверняка же используете - тот же подход для оборачивания вашего метода методом эдвайса. Спасибо за ответ. Спринг не использую в проекте. Проект на EJB и CDI. Конечно, некоторые бины обернуты интерсепторами - так сказать проксированы. Все же попробую AspectJ на зубок, если понравится, может получится протолкнуть в проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 15:01:36 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
rabiter, AspectJ очень хорошо справляется с логированием. ButWith great power comes great responsibility. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2012, 00:49:10 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
dmitriycheAspectJ очень хорошо справляется с логированиемнет ) сказали же уже 12978548 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2012, 10:44:25 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
grasoff.net, позвольте перефразировать мой пост. dmitriycheAspectJ очень хорошо справляется с логированием. В тех ситуациях, которые возникали на моей практике, AspectJ справился отлично. В моём восприятии его кросс-каты - это как селекторы в CSS, вы всегда можете подстроить нужный уровень логирования от более абстрактных вещей (пакеты, классы) до более низких (проперти). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2012, 11:26:57 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
dmitriychegrasoff.net, позвольте перефразировать мой пост. dmitriycheAspectJ очень хорошо справляется с логированием. В тех ситуациях, которые возникали на моей практике, AspectJ справился отлично. В моём восприятии его кросс-каты - это как селекторы в CSS, вы всегда можете подстроить нужный уровень логирования от более абстрактных вещей (пакеты, классы) до более низких (проперти). Да, но кросс-каты можно не везде воткнуть если я правильно понимаю. Посередине метода, например нельзя. Таким образом логирование через AspectJ сводится к простой трассировке вызова методов. Поправьте меня если я не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2012, 11:38:53 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
rabiterДа, но кросс-каты можно не везде воткнуть если я правильно понимаю. Посередине метода, например нельзя. Таким образом логирование через AspectJ сводится к простой трассировке вызова методов. Поправьте меня если я не прав. AspectJ поддерживает как момент захода в метод, так и вызов метода. Ведь вы же к чему-то обращаетесь в середине метода. Следайте кросс-кат на обращение, которое происходит внутри другого кросс-ката. Пример в данное время дать не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2012, 14:10:08 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
dmitriycheВедь вы же к чему-то обращаетесь в середине метода. Следайте кросс-кат на обращение, которое происходит внутри другого кросс-ката. Пример в данное время дать не могу.дак я зато дам ) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2012, 20:18:51 |
|
||
|
AspectJ
|
|||
|---|---|---|---|
|
#18+
dmitriyche, grasoff.net, спасибо за ответ :-) Вообщем, следующее заключение я сделал - можно попробовать AspectJ для трассировки вызова методов. Надо только еще сделать так, чтобы входные/выходные параметры тоже в трассу попадали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:51:47 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=274&tid=2131171]: |
0ms |
get settings: |
17ms |
get forum list: |
26ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
54ms |
get topic data: |
21ms |
get forum data: |
6ms |
get page messages: |
98ms |
get tp. blocked users: |
3ms |
| others: | 303ms |
| total: | 544ms |

| 0 / 0 |
