Šajā apmācībā mēs ar piemēru palīdzību uzzināsim par Java reģistrēšanu un dažādām tās sastāvdaļām.
Java ļauj mums izveidot un uzņemt žurnālziņojumus un failus, izmantojot reģistrēšanas procesu.
Java reģistrēšanai ir nepieciešami ietvari un API. Java java.util.logging
pakotnē ir iebūvēta reģistrēšanas sistēma .
Mežizstrādes nolūkos mēs varam izmantot arī trešo pušu ietvarus, piemēram, Log4j, Logback un daudz ko citu.
Java mežizstrādes komponenti
Zemāk redzamais attēls atspoguļo Java Logging API ( java.util.logging
) galvenos komponentus un vadības plūsmu .

1. mežizstrādātājs
Logger
Klase nodrošina metodes mežizstrādi. Mēs varam izcelt objektus no Logger
klases un izsaukt tā metodes reģistrēšanas vajadzībām.
Ņemsim piemēru.
Logger logger = Logger.getLogger("newLoggerName");
getLogger()
Par metodi Logger
klasē tiek izmantots, lai atrastu vai izveidotu jaunu Logger
. Virknes arguments nosaka reģistrētāja nosaukumu.
Šeit tas izveido jaunu Logger
objektu vai atgriež esošu Logger
ar tādu pašu nosaukumu.
Tā ir konvencija, lai definētu a Logger
pēc pašreizējās klases, izmantojot class.getName()
.
Logger logger = Logger.getLogger(MyClass.class.getName());
Piezīme: Šī metode mest NullPointerException
, ja pagājis nosaukums ir null
.
Katram no tiem Logger
ir līmenis, kas nosaka žurnāla ziņojuma nozīmi. Ir 7 galvenie žurnāla līmeņi:
Žurnāla līmenis (dilstošā secībā) | Izmantot |
---|---|
NOPIETNI | nopietna neveiksme |
BRĪDINĀJUMS | brīdinājuma ziņojums, iespējama problēma |
INFO | vispārīga informācija par izpildlaiku |
KONFIGURĒT | konfigurācijas informācija |
SODA | vispārīga informācija par izstrādātājiem (ziņojumu izsekošana) |
FINER | detalizēta informācija par izstrādātāju (ziņojumu izsekošana) |
FINEST | ļoti detalizēta informācija par izstrādātājiem (ziņojumu izsekošana) |
IZSLĒGTS | izslēgt reģistrēšanu visos līmeņos (neko neuzņemt) |
VISI | ieslēgt reģistrēšanu visos līmeņos (uzņemt visu) |
Katram žurnāla līmenim ir vesels skaitlis, kas nosaka to smagumu, izņemot divus īpašus žurnāla līmeņus OFF
un ALL
.
Notiek ziņojuma reģistrēšana
Pēc noklusējuma vienmēr tiek reģistrēti trīs galvenie žurnāla līmeņi. Lai iestatītu citu līmeni, mēs varam izmantot šādu kodu:
logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE);
Šajā piemērā FINE
reģistrēšanai tiek iestatīts tikai līmenis un līmeņi virs tā. Visi pārējie žurnāla ziņojumi tiek atmesti.
Tagad, lai reģistrētu ziņojumu, mēs izmantojam log()
metodi.
logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message");
Vēlamo līmeņu mežizstrādei ir stenogrāfijas metodes.
logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message");
Pēc tam visi žurnāla pieprasījumi, kas ir nokārtojuši iestatīto žurnāla līmeni, tiek pārsūtīti uz LogRecord .
Piezīme. Ja reģistrētāja līmenis ir iestatīts uz null
, tā līmenis tiek mantots no tā vecākiem un tā tālāk līdz kokam.
2. Filtri
Filtrs (ja tāds ir) nosaka, vai LogRecord ir jāpārsūta. Kā norāda nosaukums, tas filtrē žurnāla ziņojumus atbilstoši konkrētiem kritērijiem.
LogRecord tiek nodota tikai no mežizstrādātāja žurnālā apdarinātājs un no žurnāla apdarinātājs ar ārējām sistēmām, ja tas iztur norādītos kritērijus.
// set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter();
3. Apstrādātāji (pievienotāji)
Žurnālu apstrādātājs vai papildinātāji saņem LogRecord un eksportē to uz dažādiem mērķiem.
Java SE nodrošina 5 iebūvētus apstrādātājus:
Apstrādātāji | Izmantot |
---|---|
StreamHandler | raksta an OutputStream |
ConsoleHandler | raksta uz konsoli |
FileHandler | raksta failā |
SocketHandler | raksta attālās TCP ostās |
MemoryHandler | raksta atmiņā |
Apstrādātājs var nodot LogRecord filtram, lai atkal noteiktu, vai to var pārsūtīt uz ārējām sistēmām.
Lai pievienotu jaunu apdarinātāju, mēs izmantojam šādu kodu:
logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler);
Lai noņemtu apdarinātāju, mēs izmantojam šādu kodu:
logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler);
Mežizstrādātājam var būt vairāki apstrādātāji. Lai iegūtu visus apstrādātājus, mēs izmantojam šādu kodu:
Handler() handlers = logger.getHandlers();
4. Formatētāji
Apstrādātājs var arī izmantot Formatter, lai formatētu LogRecord objektu virknē, pirms to eksportē uz ārējām sistēmām.
Java SE ir divi iebūvēti formatētāji :
Formatētāji | Izmantot |
---|---|
SimpleFormatter | formatē LogRecord uz virkni |
XMLFormatter | formatē LogRecord uz XML formu |
Apstrādātāja formatēšanai mēs varam izmantot šādu kodu:
// formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter());
LogManager
LogManager objekts seko līdzi globālā mežizstrādes informāciju. Tas nolasa un uztur mežizstrādes konfigurāciju un reģistrētāja gadījumus.
Žurnāla pārvaldnieks ir vienskaitlis, kas nozīmē, ka tiek instantificēts tikai viens tā eksemplārs.
Lai iegūtu žurnāla pārvaldnieka instanci, mēs izmantojam šādu kodu:
LogManager manager = new LogManager();
Mežizstrādes priekšrocības
Šeit ir dažas no Java reģistrēšanas priekšrocībām.
- palīdz uzraudzīt programmas plūsmu
- palīdz notvert visas iespējamās kļūdas
- sniedz atbalstu problēmu diagnosticēšanai un atkļūdošanai