Witam,
Jak wiadomo logowanie jest przydatne z wielu powodów:
- Często klient kłamie i bez dobrych logów nie wiadomo co się stało w systemie.
- Łatwiej replikować błędy.
- Można ustalić jakie funkcjonalności w systemie nie są wykorzystywane.
Zapisywanie to jest dość czasochłonna operacja (szczególnie zapisywanie do bazy, a zarządzanie logami w plikach to koszmar). Ponieważ jest czasochłonna raczej powinno się to robić asynchronicznie. Pytanie jak najlepiej to zrobić?
Przychodzą mi na myśl następujące scenariusze:
- Wystawić kolejkę JMS. MDB czyta logi z kolejki (zdarzeniowo), LogService zapisuje je do kolejki.
Zalety:
- zadziała na JEE5
- zadziała po sieci
Wady: - dość złożone (czy na pewno?)
- nie zrealizuje tego na WebProfile
Zbudować service zapisujący logi jako usługę EJB. Wykorzystać adnotację @Asynchronous, aby logowanie nie spowalniało logiki biznesowej.
Zalety:
- prostsze niz MDB
Wady: - wymaga full EJB
- wymaga JEE6+
- raczej nie zrealizuje tego na WebProfile
-
Zastanawiam sie jak wykonac metode asynchroniczna w WebProfile. Czy rzeczywiscie jesli chce miec operacje asynchroniczne musze uzyc pelnego JEE?
-
Moze sam loger np. SLF4J zadba o asynchroniczne zapisanie logu np. przez JDBC?
Czy moje przepuszczenia sa sluszne czy generalnie przekombinowuje? Pozdrawiam.