Java-kirjaus

Tässä opetusohjelmassa opitaan Java Loggingista ja sen eri komponenteista esimerkkien avulla.

Java antaa meille mahdollisuuden luoda ja siepata lokiviestejä ja tiedostoja kirjautumisprosessin avulla.

Java-sovelluksessa kirjaaminen vaatii kehykset ja sovellusliittymät. Java- java.util.loggingpaketissa on sisäänrakennettu lokikehys .

Voimme käyttää myös kolmansien osapuolten puitteita, kuten Log4j, Logback ja monia muita puunkorjuuseen.

Java-kirjauskomponentit

Alla oleva kuva kuvaa Java Logging -sovellusliittymän ( java.util.logging) ydinkomponentteja ja ohjauksen kulkua .

Java-kirjaus

1. Logger

LoggerLuokka antaa menetelmät puunkorjuu. Voimme instantisoida Loggerluokan objektit ja kutsua sen menetelmiä lokitarkoituksiin.

Otetaan esimerkki.

 Logger logger = Logger.getLogger("newLoggerName"); 

getLogger()Menetelmää Loggerluokkaa käytetään löytää tai luoda uuden Logger. Merkkijono-argumentti määrittelee kirjaajan nimen.

Tässä tämä luo uuden Loggerobjektin tai palauttaa olemassa Loggerolevan samalla nimellä.

On yleinen tapa määritellä a Loggernykyisen luokan jälkeen käyttämällä class.getName().

 Logger logger = Logger.getLogger(MyClass.class.getName()); 

Huomaa: Tämä menetelmä heittää, NullPointerExceptionjos hyväksytty nimi on null.

Jokaisella Loggeron taso, joka määrittää lokiviestin tärkeyden. Lokeja on 7:

Lokitaso (laskevassa järjestyksessä) Käyttää
VAIKEA vakava epäonnistuminen
VAROITUS varoitusviesti, mahdollinen ongelma
TIEDOT yleiset ajonaikaiset tiedot
MÄÄRITÄ kokoonpanotiedot
HIENO yleiset kehittäjätiedot (viestien jäljittäminen)
FINER yksityiskohtaiset tiedot kehittäjistä
PARAS erittäin yksityiskohtaiset kehittäjätiedot (viestien jäljittäminen)
VINOSSA poista kirjaaminen käytöstä kaikilla tasoilla (älä ota mitään)
KAIKKI ota loki käyttöön kaikilla tasoilla (sieppaa kaikki)

Jokaisella lokitasolla on kokonaisluku, joka määrittää niiden vakavuuden lukuun ottamatta kahta erityistä lokitasoa OFFja ALL.

Viestin kirjaaminen

Oletusarvoisesti kolme parasta lokitasoa kirjataan. Jos haluat asettaa toisen tason, voimme käyttää seuraavaa koodia:

 logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE); 

Tässä esimerkissä vain taso FINEja sen yläpuolella olevat tasot asetetaan kirjattavaksi. Kaikki muut lokiviestit pudotetaan.

Nyt kirjaamalla viesti käytämme log()menetelmää.

 logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message"); 

Haluttujen tasojen kirjaamiseen on olemassa lyhytmenetelmiä.

 logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message"); 

Kaikki lokipyynnöt, jotka ovat läpäisseet asetetun lokitason, välitetään sitten LogRecordiin .

Huomaa: Jos kirjaajan tasoksi on asetettu null, sen taso peritään vanhemmaltaan ja niin edelleen puun yläpuolella.

2. Suodattimet

Suodatin (jos sellainen on) määrittää, onko LogRecord edelleenlähetettävä. Kuten nimestä voi päätellä, se suodattaa lokiviestit tiettyjen kriteerien mukaan.

LogRecord on vain johdetaan puunkaatajan lokikäsittelijä ja lokikäsittelijä ulkoisiin järjestelmiin, jos se läpäisee tietyn kriteerit.

 // set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter(); 

3. Käsittelijät (liitteet)

Lokin käsittelijä tai sen liitteet vastaanottavat LogRecordin ja vievät sen eri kohteisiin.

Java SE tarjoaa 5 sisäänrakennettua käsittelijää:

Käsittelijät Käyttää
StreamHandler kirjoittaa OutputStream
ConsoleHandler kirjoittaa konsoliin
FileHandler kirjoittaa tiedostoon
SocketHandler kirjoittaa TCP-etäportteihin
MemoryHandler kirjoittaa muistiin

Käsittelijä voi välittää LogRecord- suodattimen selvittääkseen, voidaanko se edelleen lähettää ulkoisiin järjestelmiin vai ei.

Uuden käsittelijän lisäämiseen käytämme seuraavaa koodia:

 logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); 

Käsittelijän poistamiseksi käytämme seuraavaa koodia:

 logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler); 

Loggerilla voi olla useita käsittelijöitä. Kaikkien käsittelijöiden saamiseksi käytämme seuraavaa koodia:

 Handler() handlers = logger.getHandlers(); 

4. Muotoilijat

Käsittelijä voi myös käyttää Formatteria muotoilemaan LogRecord- objektin merkkijonoksi ennen sen viemistä ulkoisiin järjestelmiin.

Java SE: ssä on kaksi sisäänrakennettua muotoilijaa :

Muotoilijat Käyttää
SimpleFormatter muotoilee LogRecord- merkkijonon
XMLFormatter muotoilee LogRecordin XML-muotoon

Voimme käyttää seuraavaa koodia muotoilemaan käsittelijän:

 // formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter()); 

LogManager

LogManager kohteena seuraa maailmanlaajuisen puunkorjuun tiedot. Se lukee ja ylläpitää kirjauskokoonpanoa ja kirjaajan esiintymiä.

Lokinhallinta on yksittäinen, mikä tarkoittaa, että vain yksi ilmentymä siitä on instantioitu.

Lokihallinnan ilmentymän saamiseksi käytämme seuraavaa koodia:

 LogManager manager = new LogManager(); 

Puunkorjuun edut

Tässä on joitain Java-kirjautumisen etuja.

  • auttaa seuraamaan ohjelman kulkua
  • auttaa sieppaamaan mahdollisia virheitä
  • tarjoaa tukea ongelman diagnosointiin ja virheenkorjaukseen

Mielenkiintoisia artikkeleita...