Jaka jest różnica między logger.debug
i logger.info
?
Kiedy zostanie logger.debug
wydrukowany?
Będzie to zależeć od konfiguracji logowania. Wartość domyślna będzie zależeć od używanej platformy. Chodzi o to, że później, zmieniając ustawienie konfiguracyjne z INFO na DEBUG, zobaczysz tonę więcej (lub mniej, jeśli na odwrót) linii drukowanych bez ponownej kompilacji całej aplikacji.
Jeśli zastanawiasz się, którego użyć, sprowadza się to do zastanowienia się, co chcesz zobaczyć na jakim poziomie. W przypadku innych poziomów, na przykład w Log4J, spójrz na API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html
Proponuję zapoznać się z artykułem „Krótkie wprowadzenie do log4j” . Zawiera krótkie wyjaśnienie poziomów dziennika i pokazuje, jak można je wykorzystać w praktyce. Podstawową ideą poziomów dziennika jest to, że chcesz mieć możliwość skonfigurowania, ile szczegółów zawierają dzienniki w zależności od sytuacji. Na przykład, jeśli próbujesz rozwiązać problem, dzienniki powinny być bardzo szczegółowe. W środowisku produkcyjnym możesz chcieć widzieć tylko ostrzeżenia i błędy.
Poziom dziennika dla każdego komponentu systemu jest zwykle kontrolowany za pomocą parametru w pliku konfiguracyjnym, więc można go łatwo zmienić. Twój kod zawierałby różne instrukcje logowania na różnych poziomach. Odpowiadając na wiadomość Exception
, możesz zadzwonić Logger.error
. Jeśli chcesz wydrukować wartość zmiennej w dowolnym momencie, możesz zadzwonić Logger.debug
. Ta kombinacja konfigurowalnego poziomu rejestrowania i instrukcji rejestrowania w programie umożliwia pełną kontrolę nad sposobem rejestrowania aktywności przez aplikację.
Przynajmniej w przypadku log4j kolejność poziomów logów jest następująca:
DEBUG < INFO < WARN < ERROR < FATAL
Oto krótki przykład z tego artykułu pokazujący, jak działają poziomy dziennika.
// get a logger instance named "com.foo"
Logger logger = Logger.getLogger("com.foo");
// Now set its level. Normally you do not need to set the
// level of a logger programmatically. This is usually done
// in configuration files.
logger.setLevel(Level.INFO);
Logger barlogger = Logger.getLogger("com.foo.Bar");
// This request is enabled, because WARN >= INFO.
logger.warn("Low fuel level.");
// This request is disabled, because DEBUG < INFO.
logger.debug("Starting search for nearest gas station.");
// The logger instance barlogger, named "com.foo.Bar",
// will inherit its level from the logger named
// "com.foo" Thus, the following request is enabled
// because INFO >= INFO.
barlogger.info("Located nearest gas station.");
// This request is disabled, because DEBUG < INFO.
barlogger.debug("Exiting gas station search");
Trace
jest poziom logowania.If you want to print the value of a variable at any given point, you might call Logger.debug
pomógł mi wyjaśnić zamieszanie, jakie miałem między poziomemDebug
aTrace
poziomem. Dziękuję Ci!Tylko wyjaśnienie dotyczące zestawu wszystkich możliwych poziomów, czyli:
źródło
Zasadniczo zależy to od konfiguracji rejestratorów. Zwykle wynik debugowania byłby zapisywany podczas programowania, ale wyłączany w środowisku produkcyjnym - lub być może wybrano kategorie debugowania wypisywane podczas debugowania określonego obszaru.
Celem posiadania różnych priorytetów jest umożliwienie zwiększania / zmniejszania poziomu szczegółowości określonego komponentu w rozsądnie drobnoziarnisty sposób - i wystarczy zmienić konfigurację rejestrowania (zamiast kodu), aby zobaczyć różnicę.
źródło
źródło
To jest bardzo stare pytanie, ale nie widzę tutaj swojego zrozumienia, więc dodam moje 2 centy:
Każdy poziom odpowiada / mapuje typowi użytkownika:
źródło
Jaka jest różnica między logger.debug i logger.info?
Są to tylko niektóre już zdefiniowane poziomy domyślne. Jeśli chcesz, możesz zdefiniować własne poziomy. Celem tych poziomów jest włączenie / wyłączenie jednego lub więcej z nich bez dokonywania jakichkolwiek zmian w kodzie.
Kiedy logger.debug zostanie wydrukowany?
Po włączeniu debugowania lub wyższego poziomu w konfiguracji.
źródło
To zależy od poziomu wybranego w pliku konfiguracyjnym log4j.
<Loggers> <Root level="info"> ...
Jeśli twój poziom to "info" (domyślnie),
logger.debug(...)
nie zostanie wyświetlony w twojej konsoli. Jeśli jednak twój poziom to „debugowanie”, tak się stanie.W zależności od poziomu krytyczności twojego kodu, powinieneś użyć najbardziej dokładnego poziomu spośród następujących:
źródło