2012-11-12 8 views
5

Mam jedną metodę w klasie, która jest bardzo szczegółowe, a to sprawia, że ​​dzienniki są trudne do odczytania. Chciałbym ograniczyć jego rejestrowanie, zmieniając tylko poziom tej metody, pozostawiając inne metody w tej samej klasie niezmienione. czy to możliwe?Czy mogę ustawić poziom rejestrowania w ramach metody Java za pomocą log4j?

+0

Możesz zadeklarować własny poziom rejestrowania i użyć go w tej metodzie. Innym sposobem jest trochę hacky i polega na podniesieniu poziomu Log w metodzie (przez Logger.setLevel()), ale to naprawdę sprytne – BigMike

Odpowiedz

6

Możesz zmienić konfigurację poziomu dla tej klasy, ale nie dla określonych metod w klasie. Jedynym sposobem zrobienia tego, co chcesz, byłoby użycie innego rejestratora w tej metodzie, a następnie skonfigurowanie go na innym poziomie.

Mam nadzieję, że to pomoże.

0

Nie sądzę, że jest posible bezpośrednio do zmiany sposobu rejestrowania tylko metody

3

Nie można zmienić poziom rejestrowania na podstawie jednej metody. "Rejestrator" to najlepszy poziom szczegółowości kontroli. Zwykle istnieje relacja jeden-do-jednego między instancjami i klasami rejestratora ... ale zależy to od tego, w jaki sposób została zakodowana.

Jeśli możesz zmienić kod, zalecamy utworzenie specjalnego obiektu rejestrującego dla hałaśliwej metody, aby można było go kontrolować niezależnie od innego kodu korzystającego z istniejącego programu rejestrującego. (Lub może po prostu zmienić sposób rejestrowania wywołań metody).

Jeśli nie możesz zmienić kodu, może być konieczne użycie "hack", takich jak przetwarzanie plików dziennika, lub pisanie i konfigurowanie niestandardowego Appender, który pomija niechciane komunikaty dziennika.

-1

Jest to możliwe. Zobacz mój komentarz do OP.

Podstęp polega na utworzeniu niestandardowego poziomu (mniej niż TRACE) (jak wyjaśniono w here) i użycie tego poziomu dziennika w bardzo szczegółowych metodach.

Ofc w tej metodzie nie będziesz używał skrótów Logger do metod logowania, ale powinieneś użyć metod Logger.log (Level, Object) i Logger.log (Level, Object, Thayble).

Powiązane problemy