Aby rejestrować błędy dla danej klasy, uzyskuję dostęp do nazwy klasy w następujący sposób: Jest to "dobry" sposób na zwrócenie nazwy klasy jako łańcucha znaków, dzięki czemu można jej użyć do rejestrowania ?Uzyskiwanie nazwy klasy dla rejestrowania
Odpowiedz
Możesz ustawić parametry logowania w samym log4j.xml.
Dla exp -
<appender name="swcd-web" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Threshold" value="DEBUG"/>
<param name="Append" value="true"/>
<param name="File" value="${catalina.home}/logs/swcd-web.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
</layout>
</appender>
wyjątki takie jak ten Byłoby zalogować swcd-web.log pliku -
2012-05-23 16:34:51,632 [main] ERROR com.idc.sage.sso.dynamo.SsoDbStorage - cannot get configuration for max SSO age
zrobię to w ten sposób:
logger.error("Error occured in " + this.getClass().getName());
Łatwiej jest zachowywać się, jeśli coś się zmieni, ale są inne sposoby, aby to zrobić.
Jeśli zainicjować Rejestrator ten sposób:
private static Logger logger = Logger.getLogger(MyClass.class.getName())>
następnie nazwa klasy będzie obecny w każdym razie Rejestrowanie, nie trzeba jawnie umieścić go w każdej rozmowy dziennika:
logger.error("Error occured while doing this and that");
można skonfigurować usługę rejestrowania (w logging.properties w przypadku java.util.logging
lub log4j.properties jeśli używasz Apache log4j) w celu włączenia nazwa klasy w każdym komunikacie dziennika.
Ponieważ nie podano, z której biblioteki logowania korzystasz, sugeruję użycie slf4j. Myślę, że jest to najłatwiejsze do zdobycia. Wystarczy poprosić o obiekcie rejestratorze z slf4j na LoggerFactory
tak:
private static final Logger LOGGER = LoggerFactory.getLogger(YouerClass.class);
teraz można korzystać z obiektu LOGGER do logowania.
Logging błąd na przykład wygląda następująco:
LOGGER.error(yourMessage, throwable);
Można wysłać wiadomość prosty łańcuch lub cały wyjątek.
Java 8 Rozwiązanie
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.invoke.MethodHandles;
...
private final static Logger LOG =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
Otrzymuję błąd: Metoda getLogger (klasa
bardzo dziwna, czy używasz Java 8 i logback? – MariuszS
nie używać logback, dzięki –
- 1. Uzyskiwanie nazwy deklarowanej klasy?
- 2. Uzyskiwanie aktualnej nazwy klasy, w tym pakietu
- 3. Jaki jest najbardziej wydajny sposób rejestrowania nazwy klasy i metody?
- 4. Uzyskiwanie nazwy klasy nadrzędnej za pomocą Reflection
- 5. Logowanie w języku C#: Uzyskiwanie wydajności klasy/nazwy metody
- 6. uzyskiwanie pełnej nazwy zespołu
- 7. Podsumowanie dla rejestrowania w Pythonie
- 8. Uzyskiwanie dostępu do nazwy klasy i właściwości wewnątrz atrybutu
- 9. Uzyskiwanie nazwy obiektu z obiektu klasy podklasy NSMangedObject
- 10. Uzyskiwanie nazwy aktywnego okna
- 11. alias dla nazwy klasy w metodzie
- 12. Wyjątek hibernacji: nieznana wartość nazwy dla klasy wyliczeniowej
- 13. Uzyskiwanie klasy tablic klasy komponentu typu
- 14. Uzyskiwanie nazwy kolumn z AbstractTableModel
- 15. Odzyskiwanie nazwy klasy tablicy
- 16. Pobierz instancję klasy według nazwy klasy string
- 17. Zmienna licznika dla klasy
- 18. Pobierz zestaw według nazwy klasy
- 19. Uzyskiwanie nazwy centrum danych Cassandra w cqlsh
- 20. Jak zapętlić nazwy pól klasy
- 21. Usuwanie elementów według nazwy klasy?
- 22. Pobieranie nazwy klasy z instancji
- 23. jak ustawić dwie nazwy klasy dla ember.js wejściowego pomocnika
- 24. Używanie zmiennej ruby dla nazwy klasy w HAML
- 25. Jakiej nazwy klasy powinienem używać dla adaptera adaptera formatu?
- 26. Uzyskiwanie dostępu do prototypu klasy potomnej z klasy nadrzędnej
- 27. Uzyskiwanie nazwy koloru za pomocą wartości heksadecymalnej?
- 28. Uzyskiwanie nazwy portu podłączonego urządzenia USB
- 29. GDB: Uzyskiwanie nazwy symbolu z adresu pamięci
- 30. Uzyskiwanie nazwy użytkownika z wartości HKEY_USERS
Nie chodzi o log4j. –