Zasada działania log4j

0

Mam mały problem ze zrozumieniem jednej rzeczy.
Mianowicie.
Czy jeżeli korzystam z log4j to za każdym razem sam muszę dodawać np logger.info("cos");
Przykładowo chciałbym aby pojawiał się wpis zawsze w pliku jak zostanie wywołana funkcja publiczna.
Teraz do każdej funkcji publicznej muszę dodać coś w stylu logger.info("cos"); Czy istnieje możliwość aby bez ingerencji w te funkcje wpis został dodawany ?

2

Jesli uzywasz samego log4j to niespecjalnie, musisz sam wolac loggera.
Jednak to co opisujesz to typowy przyklad 'aspektu' - poczytaj troche na ten temat, ale mozna to zrobic tak ze definiujesz 'pointcut' ktory oznacza wszystkie metody publiczne w calej aplikacji, oraz 2 'advice' - before i after - ktore loguja wejscie i wyjscie z metody. Takie aspekty sa dosc inwazyjne, poniewaz dzialaja na zasadzie dodawania bytecodu do klas (podczas kompilacji lub podczas ladowania klasy) - czyli w sumie dodaja bytecode ktory mniej wiecej odpowiada kodowi ktory bys sam napisac wolajac tego loggera.
Minus jest taki ze sam wolajac loggera masz pelna kontrole nad tym co jest logowane - rozne dodatkowe wartosci itp, a taki aspekt jest bardzo generyczny. Wiadomo, moze jest ok logowanie ciagle tego samego ('metoda blah rozpoczeta', 'metoda blah zakonczone', moze dodanie parametrow) lub jakas skomplikowana konfiguracja itp...

1 użytkowników online, w tym zalogowanych: 0, gości: 1