Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Java logger properties

  1. #1

    Java logger properties

    Salve,
    Sto scrivendo un applicazione che usa il logger di java, per impostare le proprietà del log uso un file .properties esterno che carico all'avvio con:
    codice:
    LogManager.getLogManager().readConfiguration(new FileInputStream(logPropertiesFile));
    Tutto funziona bene ad eccezione della selezione del livello, cioè nel file di configurazione ho scritto
    codice:
    # Set the logging level of the root logger.
    .level=CONFIG
    
    # Set the logging level from specific namespace
    myPackage.level=FINEST
    perché volevo avere tutti i messaggi da CONFIG in su di tutto, ed invece tutti i livelli sul mio package. Ma da varie prove sembra che in tutti i casi conti solo il primo
    codice:
    .level=CONFIG
    cioè qualsiasi cosa metto in
    codice:
    myPackage.level=XXX
    i messaggi sono solo da CONFIG in su. Per vedere i messaggi FINEST del mio package devo mettere FINEST anche nel root log, ma a quel punto vedo anche una miriade di messaggi di log da java,javafx...ecc che non mi interessano.

    Come posso fare per impostare un livello di log FINEST solo ad uno specifico package?
    Grazie in anticipo.

  2. #2
    Come definisci il logger nella tua classe ? nel file di properties non sono i nomi dei package ma i nomi dei logger (o handler)

  3. #3
    All'inizio di ogni classe ottengo il logger cosi:
    codice:
    package myPackage;
    public class MyClass extends Application{ 
    private static final Logger logger = Logger.getLogger(MyClass.class.getName());
    .....
    
    poi scrivo i messaggi all'interno della classe cosi:
    codice:
    logger.log(Level.INFO,"Message");
    E' corretto?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da federico.massim Visualizza il messaggio
    codice:
    private static final Logger logger = Logger.getLogger(MyClass.class.getName());
    Sì, è corretto (il Logger del JDK fornisce un Logger solo a fronte di un String ... non anche di un Class come invece fa es. Log4j). E usare il nome qualificato della classe è appunto il modo standard/convenzionale.


    Quote Originariamente inviata da federico.massim Visualizza il messaggio
    Come posso fare per impostare un livello di log FINEST solo ad uno specifico package?
    Il javadoc LogManager lo documenta. In generale, es.:

    nome.del.tuo.package.level = FINEST
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quindi sembra essere tutto corretto! Però ancora non mi spiego perché non funzioni?

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.