Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely 1
Ominaisuudet Kun tutkimme työasemapohjaisia sovelluksiamme, tarvitaan joskus tietoa: mikä on käyttöjärjestelmä mikä on käytössä oleva kieli mikä on javan versio mikä on javan CLASSPATHin sisältö jne. 2
Ominaisuuksien tutkiminen tapahtuu System- ja Properties- luokkien avulla java.lang.system-luokan konkreettinen ilmentymä on työasema jossa sovellus toimii java.util.properties on ominaisuuksien käsittelyyn tarkoitettu luokka 3
System-luokka ja ominaisuudet System-luokka ja ominaisuudet System-luokassa on metodi getproperties(), joka palauttaa järjestelmäominaisuuksien nimet Properties-luokan ilmentymänä Luodaan Properies-luokan ilmentymä, johon talletetaan järjestelmäominaisuudet: Properties ominaisuudet = System.getProperties(); 4
työaseman ominaisuuksien tutkiminen import java.util.properties; public class Nuuskija { Properties ominaisuudet; private void aja(){ ominaisuudet = new Properties(System.getProperties()); ominaisuudet.list(system.out) ; } } public static void main(string[] args) { // TODO Auto-generated method stub new Nuuskija().aja(); } 5
Ominaisuustiedostot Sovellusten yhteiset ominaisuudet talletetaan ominaisuus eli.properties-loppuisiin tiedostoihin Ominaisuuksia voivat olla esimerkiksi tiedosto/tiedostot joita sovellus käsittelee graafiseen käyttöliittymän ulkoasu sovelluspalvelimen ominaisuuksia 6
Mitä hyötyä on ominaisuustiedostojen käytöstä? Sovelluksen luokkien yhteiset ominaisuudet saavat samat arvot ja näin voidaan taata yhdenmukaisuus sovellukseen 7
Esimerkki Properties-tiedoston sisällöstä, sovelluspalvelimen ominaisuuksia: Muoto: admin.port=4848 pointbase.port=9092 domain.name=domain1 ominaisuuden nimi = ominaisuuden arvo 8
Kommentit ominaisuustiedostossa # Copyright (c) 2000, 2005 IBM Corporation and others. # All rights reserved. This program and the accompanying # materials are made available under the terms of the # Eclipse #Public License v1.0 # which accompanies this distribution, and is # available at http://www.eclipse.org/legal/epl-v10.html # ilmoittaa että kyseessä on kommenttirivi 9
Properties Ominaisuustiedostot voidaan ladata sovelluksen käyttöön Määritetään Properties-luokan ilmentymä (samoin kuin edellisessä esimerkissä): Properties propfile = new Properties(); Määritellään ominaisuustiedosto: String nimi; File ominaisuudet; nimi = "..\\tiedostot\\engheaders.properties"; tiedot = new File(nimi); Ladaan ominaisuustiedosto: propfile.load (new FileInputStream (nimi)); 10
Osio 4: Logger Seuranta Logging kerätään informaatiota ajettavasta ohjelmasta ja tarvittaessa sen käsittelemästä tiedosta, datasta. Jos ohjelman toimintaa testataan ja seurataan(debugataan), ohjelmasta saatava informaatio kertoo ohjelman toiminnasta. Tällaisia tilanteita ovat esimerkiksi tiedon talletus tietokantaan tai tiedostoon: talletetuista tapahtumista voidaan kirjoittaa informaatiota lokitiedostoon, josta tarvittaessa voidaan tutkia, mitä tietokannan käsiteltäessä tehtiin. 11
Osio 4: Logger Seuranta Kun ohjelman toimintaa halutaan seurata, voidaan käyttää println()-metodia ja tehdä itse ilmoituksia. Kuitenkin seuraaminen on hyödyllisempää ja tehokkaampaa Loggerin avulla. Loggerin avulla voidaan optimoida seuranta vakavampiin tapauksiin. Seurantaan tarvittavat luokat on pakkauksessa java.util.logging. 12
Osio 4: Logger Ilmoitukset Taso Vaikutus Numeroarvo OFF ei loki-ilmoituksia Integer.MAX_VALUE SEVERE vain erittäin vakavat ilmoitukset raportoidaan 1000 WARNIN G loki-ilmoitukset, tasot WARNING and SEVERE raportoidaan 900 INFO loki-ilmoitukset, tasot INFO ja vahvempi, raportoidaan 800 CONFIG loki-ilmoitukset, tasot CONFIG and vahvempi, raportoidaan 700 FINE loki-ilmoitukset, tasot FINE ja vahvempi, raportoidaan 500 FINER loki-ilmoitukset, tasot FINER ja vahvempi, raportoidaan 400 FINEST loki-ilmoitukset, tasot FINEST and aboveja vahvempi, raportoidaan ALL kaikki loki-ilmoitukset raportoidaan Integer.MIN_VALUE 300 13
Osio 4: Logger Käsittelijät StreamHandler ConsoleHandler FileHandler SocketHandler MemoryHandler kirjoittaa tietueet OutputStream-luokan ilmentymään Kirjoittaa ilmoitukset System.err standardivirhevirtaan kirjoitaa ilmoitukset yhteen tai useampaan lokitiedostoon tietoliikennettä varten, kirjoittaa ilmoitukset TCP portteihin puskuroi lolokitietueet muistiin 14
Osio 4: Logger Ilmoituksen muotoilijat Formatters muotoilijat Formatterin avulla voidaan muotoilla Handlereiden tekemiä ilmoituksia. Jos käytät esimerkiksi FileHandleria ilman muotoilijaa, voi syntyvän tietueen sisältö olla hankalasti luettavissa, koska sisältö on XML:ää. Kun lisäät muotoilijan, ilmoitus on luettavammassa muodossa. 15
Osio 4: Logger Muotoilijat Luokat SimpleFormatter() format (LogRecord record) XMLFormatter() format(logrecord record) 16
Osio 4: Logger Esimerkit osion 4 sivustossa: TekstitiedostoLogger.java: esittelee Loggerin ja sen avulla saatavan informaation käyttöä. Ohjelma lukee tekstitiedostoa ja Loggerin avulla tulostetaan informaatiota konsoliin. TekstitiedostoKirjoittajaLogger: tiedostoon kirjoitetaan rivejä ja niistä tehdään myös lokitiedosto. 17