[megoldva] Java Logger class

Fórumok

Udv,

a kovetkezo a problema. Minden osztalyban van egy private static final Logger, amit a Logger.getLogger(MyClass.class.getName()) static metodussal kapok meg. A visszaadott loggeren meghivtam a setLevel(Level.ALL)-t, megis csak az INFO szintu uzeneteket loggolja, se alacsonyabbat, se magasabbat. Valami tipp, hogy miert lehet?

Szerk.: Java SE 6 API java.util.logging.Logger osztalyarol van szo. Nincs appserver, egyszeru Java SE app van csak. Code sample:


public class P2PClient {
    private static final Logger logger = Logger.getLogger(P2PClient.class.getName());

    public static void main(String[] args) {
        logger.setLevel(Level.ALL);
        new P2PClient().start(args);
    }

    public void start(String[] args) {
       // Itt mar vannak dolgok, de csak az INFO szintu jelenik meg a kepernyon.
    }
}

Hozzászólások

A kimeneti loglevel szerintem az appserver dolga, a program dolga az, hogy az adott loglevelen írjon valamit. Ha beállítod a programban a loglevelt ALL-ra, akkor azzal fogja írni a logot az a logger, ahol a class-od van. Aztán amikor fájlba kerülne, akkor van egy threshold, ami szűr, ez valószínűleg INFO, ha nem állítasz be semmi különöset.
--
http://wiki.javaforum.hu/display/~auth.gabor/Home

Milyen logger implementációt használsz?
És hol hívod meg ezt a függvényt? Static initializerben?
Nem lenne egyszerűbb a megfelelő konfigurációs fájlban beállítani a loglevelt?

Akkor legyen konfig fájl.

Egyébként ezért látod, amit látsz:
http://download.oracle.com/javase/6/docs/api/java/util/logging/ConsoleH…

Configuration: By default each ConsoleHandler is initialized using the following LogManager configuration properties. If properties are not defined (or have invalid values) then the specified default values are used.
java.util.logging.ConsoleHandler.level specifies the default level for the Handler (defaults to Level.INFO).
java.util.logging.ConsoleHandler.filter specifies the name of a Filter class to use (defaults to no Filter).
java.util.logging.ConsoleHandler.formatter specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).
java.util.logging.ConsoleHandler.encoding the name of the character set encoding to use (defaults to the default platform encoding).

OK, a megoldas, hogy a JRE logging.properties fajljaban at kellett irni az alap INFO levelt, hogy a ConsoleHandler ne azzal inicializalodjon. Azt tovabbra sem ertem, hogy kodbol miert nem eleg explicit beallitani a loglevelt a handlerre, de hat ez van. Lenyeg, hogy mukodik.