powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / spring operation log
14 сообщений из 14, страница 1 из 1
spring operation log
    #39179531
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !

есть небольшое приложение под управлением spring

Объектная модель состоит из 3 бизнес бинов (Есть полная CRUD через spring data repository)

Нужно добавить лог операций , какой пользователь сто создал , удалили и коды ошибок ...

каким образом такое организовать ?

из идей пока ничего простого в голову не приходит ?!

есть некий CRUD абстрактный сервис - может на него повесить Interceptor ? и логировать все действия ?

тогда каким образом перехватывать ошибки? чтобы их так же писать в лог ?

может уже есть готовая библиотека?
...
Рейтинг: 0 / 0
spring operation log
    #39179568
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1 каким образом такое организовать ?
из идей пока ничего простого в голову не приходит ?!

Aspect-oriented Programming

Atum1есть некий CRUD абстрактный сервис - может на него повесить Interceptor ? и логировать все действия ?

Куда хочешь, туда и вешай. Надо на сервис, вешай на сервис, надо на репозиторий - вешай туда.

Atum1тогда каким образом перехватывать ошибки? чтобы их так же писать в лог ?

catch (Throwable t) {...}

Atum1может уже есть готовая библиотека?
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html
...
Рейтинг: 0 / 0
spring operation log
    #39179730
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы не использовать @ControllerAdvice? Мне кажется это отличный способ по отлову всех исключений в одном месте, там же и логировать куда нужно. Что касается всего остального, есть еще такая штука, как @RepositoryEventHandler. Все это конечно же не что иное как Aspect-oriented Programming.
...
Рейтинг: 0 / 0
spring operation log
    #39179831
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTА почему бы не использовать @ControllerAdvice? Мне кажется это отличный способ по отлову всех исключений в одном месте, там же и логировать куда нужно. Что касается всего остального, есть еще такая штука, как @RepositoryEventHandler. Все это конечно же не что иное как Aspect-oriented Programming.

о за @RepositoryEventHandler списибо !

я думал про

@EntityListeners

Код: java
1.
2.
3.
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class AbstractAuditEntity<T extends Serializable> implements Serializable {



но это как то слишком уж близко к бинам ...

а вот про Аспекты - тут проблема в том что это не очень красиво - в плане ,что кто-то из разработчиков может про них не знать или добавив новый функционал может забыть добавить аспект итд...
...
Рейтинг: 0 / 0
spring operation log
    #39179878
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1какой пользователь сто создал , удалили и коды ошибок ...
у тебя нет вариантов т.к. тут намешано логирование БЛ и ошибки разного уровня.
Если логирование БЛ, то они и будут ближе к бинам и БЛ.
Если ошибки, то по документации спринг.
Т.е. придётся использовать все 4 метода:
- try
- @аннотация
- мойБинПоЛогированию
- защита модели БД триггером или ....
...
Рейтинг: 0 / 0
spring operation log
    #39179880
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1кто-то из разработчиков может про них не знать или добавив новый функционал может забыть добавить аспект итд...
тесты на логи об успешных операциях тоже должны быть.
Если логи в БД, то триггер тоже можно забыть поставить.
...
Рейтинг: 0 / 0
spring operation log
    #39181066
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTА почему бы не использовать @ControllerAdvice? Мне кажется это отличный способ по отлову всех исключений в одном месте, там же и логировать куда нужно. Что касается всего остального, есть еще такая штука, как @RepositoryEventHandler. Все это конечно же не что иное как Aspect-oriented Programming.

Успешные операции так же нужно логировать ...
...
Рейтинг: 0 / 0
spring operation log
    #39182528
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

Вопрос :

Код: java
1.
2.
3.
@MappedSuperclass
@EntityListeners({AuditingEntityListener.class , OperationsLogListener.class})
public abstract class AbstractAuditEntity<T extends Serializable> implements Serializable {



могу ли я в OperationsLogListener заинжектить сервис?

Сейчас operationService = null;

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Service
public class OperationsLogListener {

    @Autowired
    private final OperationService operationService;

    @PrePersist
    private void prePersist(AbstractAuditEntity entity) {
        Operation operation = new Operation(entity.getCreatedBy(), entity.getClass().getCanonicalName(), OperationType.POSTPERSIST, OperationType.OK.toString());
        operationService.save(operation);
    }
...
Рейтинг: 0 / 0
spring operation log
    #39182670
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другими словами - можно ли в индекторы (листренеры.. инжектить другие сервисы?)
...
Рейтинг: 0 / 0
spring operation log
    #39183988
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

делал похожее через аспекты (для логов ошибок/пользователей/производительности)
получается очень удобно и гибко (можно даже прям в DataSource зализать и логировать sql-запросы и делать иерархию вызовов)
...
Рейтинг: 0 / 0
spring operation log
    #39185210
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да , скорее всего нужен именно аспект ...

причем очень удобно - и именно прокси :

Around advice чтобы выполнять метод записи внутри аспекта и записать действие до выполнения и после ... или ошибку в лог .


тут описано про инекцию в
в AbstractEntityListener , но у меня этого не происходит ... грубо говоря dateTimeService = null;
Код: java
1.
2.
3.
4.
AbstractEntityListener {

    @Autowired
    private DateTimeService dateTimeService;


https://guylabs.ch/2014/02/22/autowiring-pring-beans-in-hibernate-jpa-entity-listeners/
...
Рейтинг: 0 / 0
spring operation log
    #39185254
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
spring operation log
    #39185364
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос :

аннотация

Код: java
1.
2.
3.
4.
5.
6.
7.
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
@Documented
public @interface ProfileExecution {

}



работает только когда стоит на реальным методом ...

а можно как то поменять поведение - чтобы логирование вызывалось -и в случае если мы проставили эту аннотацию в интерфейсе ?
...
Рейтинг: 0 / 0
spring operation log
    #39185575
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите один ответ:

есть

Код: java
1.
@EnableAspectJAutoProxy



Это аналог


Код: java
1.
2.
3.
4.
5.
6.
7.
@Bean

   public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
        DefaultAdvisorAutoProxyCreator creator = new DefaultAdvisorAutoProxyCreator();
        creator.setProxyTargetClass(true); // it's false by default
        return creator;
    }


???? но тогда ему нужно выставить
Код: java
1.
@EnableAspectJAutoProxy(proxyTargetClass = true)



так ?


второе : если я использую танзакции


Код: java
1.
@EnableTransactionManagement(proxyTargetClass = true)



им так же нужно выставить ? proxyTargetClass = true


тогда почему в EnableTransactionManagement public AdviceMode mode() default AdviceMode.PROXY;

PROXY - ???

нужно же явно указать AdviceMode ASPECTJ ???

или оно будет работать без AdviceMode ASPECTJ ?

Запутался совсем ...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / spring operation log
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]