V tej vadnici bomo s pomočjo primerov spoznali Java Logging in njegove različne komponente.
Java nam omogoča, da skozi postopek beleženja ustvarjamo in zajemamo dnevniška sporočila in datoteke.
V Javi dnevniki zahtevajo ogrodje in API-je. Java ima v java.util.logging
paketu vgrajen dnevniški okvir .
Za namene beleženja lahko uporabimo tudi ogrodja drugih proizvajalcev, kot so Log4j, Logback in še veliko več.
Komponente dnevnika Java
Spodnja slika predstavlja osnovne komponente in tok nadzora nad API-jem za beleženje Java ( java.util.logging
).

1. Drvar
Logger
Razred določa metode za sečnjo. Predmete iz Logger
razreda lahko primerimo in njegove metode pokličemo za beleženje.
Vzemimo primer.
Logger logger = Logger.getLogger("newLoggerName");
getLogger()
Metoda Logger
razreda se uporablja za iskanje ali ustvarite novo Logger
. Argument niza definira ime zapisovalnika.
Tu ustvari nov Logger
objekt ali vrne obstoječega Logger
z istim imenom.
Pravilo je določiti a Logger
po trenutnem razredu z uporabo class.getName()
.
Logger logger = Logger.getLogger(MyClass.class.getName());
Opomba: Ta metoda bo vrgla, NullPointerException
če je posredovano ime null
.
Vsak Logger
ima raven, ki določa pomembnost sporočila dnevnika. Obstaja 7 osnovnih stopenj dnevnika:
Raven dnevnika (v padajočem vrstnem redu) | Uporaba |
---|---|
HUDO | resna okvara |
OPOZORILO | opozorilno sporočilo, potencialna težava |
INFO | splošne informacije o času izvajanja |
KONFIG | informacije o konfiguraciji |
V REDU | splošne informacije za razvijalce (sporočila o sledenju) |
FINER | podrobne informacije za razvijalce (sporočila o sledenju) |
NAJBOLJŠE | zelo podrobne informacije o razvijalcih (sledenje sporočilom) |
IZKLOPLJENO | izklopi beleženje za vse ravni (ničesar ne zajema) |
VSE | vklopite beleženje za vse ravni (zajemite vse) |
Vsaka raven dnevnika ima celoštevilčno vrednost, ki določa njihovo resnost, razen za dve posebni ravni dnevnika OFF
in ALL
.
Beleženje sporočila
Privzeto so vedno zabeležene tri najvišje ravni dnevnika. Za nastavitev drugačne ravni lahko uporabimo naslednjo kodo:
logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE);
V tem primeru FINE
so zabeleženi le nivoji in nivoji nad njim. Vsa ostala dnevniška sporočila so izpuščena.
Zdaj za prijavo sporočila uporabimo log()
metodo.
logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message");
Obstajajo okrajšane metode za beleženje na želenih ravneh.
logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message");
Vse zahteve dnevnika, ki so prestale nastavljeno raven dnevnika, se nato posredujejo v LogRecord .
Opomba: Če je raven beležnika nastavljena na null
, se raven podeduje od starša in tako naprej po drevesu.
2. Filtri
Filter (če je prisoten) določa, ali je treba LogRecord posredovati ali ne. Kot že ime pove, filtrira dnevniška sporočila glede na določena merila.
LogRecord je minilo samo od logger v log trener in iz dnevnika vodnika z zunanjimi sistemi, če gre za natančno določene kriterije.
// set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter();
3. Vodniki (dodatki)
Obdelovalec dnevnika ali pripisovalniki prejmejo LogRecord in ga izvozijo na različne cilje.
Java SE ponuja 5 vgrajenih upravljavcev:
Vodniki | Uporaba |
---|---|
StreamHandler | piše v OutputStream |
ConsoleHandler | piše v konzolo |
FileHandler | piše v datoteko |
SocketHandler | piše v oddaljena vrata TCP |
MemoryHandler | zapisuje v spomin |
Obdelovalec lahko LogRecord pošlje filtru, da znova ugotovi, ali ga je mogoče posredovati zunanjim sistemom ali ne.
Za dodajanje novega vodnika uporabimo naslednjo kodo:
logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler);
Za odstranitev vodnika uporabimo naslednjo kodo:
logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler);
Drvar ima lahko več obdelovalcev. Da bi dobili vse upravljavce, uporabimo naslednjo kodo:
Handler() handlers = logger.getHandlers();
4. Oblikovalci
Vodnik lahko uporabite tudi oblikovalnik formatirati LogRecord objekt v nizu pred izvozom na zunanje sisteme.
Java SE ima dva vgrajena Formatterja :
Oblikovalci | Uporaba |
---|---|
SimpleFormatter | formatira LogRecord v niz |
XMLFormatter | formati LogRecord v obliki XML |
Za formatiranje vodnika lahko uporabimo naslednjo kodo:
// formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter());
LogManager
Objekt LogManager spremlja globalne podatke beleženja. Bere in vzdržuje konfiguracijo beleženja in primerke dnevnikov.
Upravitelj dnevnika je en sam, kar pomeni, da je instanciran le en primerek.
Za pridobitev primerka upravitelja dnevnikov uporabimo naslednjo kodo:
LogManager manager = new LogManager();
Prednosti sečnje
Tu je nekaj prednosti beleženja v Javi.
- pomaga pri spremljanju poteka programa
- pomaga pri zajemanju morebitnih napak
- zagotavlja podporo za diagnozo in odpravljanje napak