SORU
11 HAZİRAN 2011, CUMARTESİ


Neden Seviye.Günlük iletileri gösterme değil, TAMAM mı?

JavaDocs for java.util.logging.Level devlet:


Azalan seviyeleri:

  • SEVERE (en yüksek değer)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST (en düşük değer)

Kaynak

import java.util.logging.*;

class LoggingLevelsBlunder {

    public static void main(String[] args) {
        Logger logger = Logger.getAnonymousLogger();
        logger.setLevel(Level.FINER);
        System.out.println("Logging level is: "   logger.getLevel());
        for (int ii=0; ii<3; ii  ) {
            logger.log(Level.FINE, ii   " "   (ii*ii));
            logger.log(Level.INFO, ii   " "   (ii*ii));
        }
    }
}

Çıktı

Logging level is: FINER
Jun 11, 2011 9:39:23 PM LoggingLevelsBlunder main
INFO: 0 0
Jun 11, 2011 9:39:24 PM LoggingLevelsBlunder main
INFO: 1 1
Jun 11, 2011 9:39:24 PM LoggingLevelsBlunder main
INFO: 2 4
Press any key to continue . . .

Problem durumu

Benim örnek, her bir döngü için 2 mesaj beklediğim kadar FINER Level ayarlar. Bunun yerine her bir döngü (Level.FINE mesajlar kayıp) için tek bir mesaj görüyorum.

Soru

FINE (, FINER FINEST) çıktısını görmek için değişen ne gerek var?

Güncelleme (çözüm)

Benim beklentim göre Vineet Reynolds' answer Bu sürüm çalışmaları için teşekkürler. 3xINFO mesajlar, & 3xFINE iletileri görüntüler.

import java.util.logging.*;

class LoggingLevelsBlunder {

    public static void main(String[] args) {
        Logger logger = Logger.getAnonymousLogger();
        // LOG this level to the log
        logger.setLevel(Level.FINER);

        ConsoleHandler handler = new ConsoleHandler();
        // PUBLISH this level
        handler.setLevel(Level.FINER);
        logger.addHandler(handler);

        System.out.println("Logging level is: "   logger.getLevel());
        for (int ii=0; ii<3; ii  ) {
            logger.log(Level.FINE, ii   " "   (ii*ii));
            logger.log(Level.INFO, ii   " "   (ii*ii));
        }
    }
}

CEVAP
11 HAZİRAN 2011, CUMARTESİ


Kaydediciler sadece güncesi, yani günlük kayıtlarını (veya günlüğü istekleri) oluştururlar. Dikkat İşleyicileri tarafından alınmış olan yerler, bu mesajları yayınlamak istemiyorlar. Bir logger seviyesi ayarı, sadece neden oluroluşturungünlük kayıtları veya daha yüksek seviye eşleme.

ConsoleHandler (çıkış Sistemi.nerede olduğunu tahmin edemedim kullanıyor olabilirsiniz 25* *seviye kayıtları günlüğü olan veya bir dosya, ama tahmin ediyorum ki eski) err. İstenilen sonuç için seviye günlük kayıtları Level.FINER ve daha yayımlamak için bu handler, yapılandırmak olacak.

Temel tasarım anlamak için Java Logging Overview kılavuzu okuma tavsiye ederim. Kılavuzu bir Logger kavramı ve İşleyicisi arasındaki farkı kapsar.

İşleyici düzeyinde düzenleme

1. Yapılandırma dosyası kullanarak

Java.açıklama.özellikleri dosyası (varsayılan olarak, bu JRE_HOME/lib 27 *dosya) günlük ConsoleHandler varsayılan düzeyini değiştirmek için modifiye edilebilir:

java.util.logging.ConsoleHandler.level = FINER

2. Zamanında işleyicileri oluşturma

Bu genel yapılandırma geçersiz kılma neden olacağı için tavsiye edilmez. Kod tabanı boyunca bu kullanarak muhtemelen yönetilemez logger bir yapılandırma neden olur.

Handler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.FINER);
Logger.getAnonymousLogger().addHandler(consoleHandler);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011