как создать экземпляр для логгера? - PullRequest
1 голос
/ 03 июня 2011

Вот мой код

package com.my;
import org.apache.log4j.spi.LoggerFactory;
import java.io.*;
import java.util.logging.*;

public class Log {
      public static void main(String[] args) {
      try{
           FileHandler hand = new FileHandler("vk.log");
           Logger log = Logger.getLogger("log_file");
           log.addHandler(hand);
           log.warning("Doing carefully!");
           log.info("Doing something ...");
           log.severe("Doing strictily ");
           System.out.println(log.getName());
      }
      catch(IOException e){
           System.out.println(e)
      }
    }

}

Ответы [ 3 ]

4 голосов
/ 03 июня 2011

Ваш код должен работать, если вы удалите лишний оператор log.getLogger(""); и исправите импорт.

Пара комментариев:

  • Если у вас есть несколько регистраторов, вы можете выборочно включать и выключать их. Обычно создается несколько регистраторов на основе имен классов или пакетов; например, * +1008 *

    Logger log = Logger.getLogger(this.getClass());
    

    или

    Logger log = Logger.getLogger(SomeClass.class);
    
  • Вы создаете и связываете обработчик программно. Лучше поместить конфигурацию журналирования в файл XML или файл свойств и использовать один из конфигураторов, чтобы загрузить его и подключить обработчики журналирования. Это позволяет вам ... или пользователю ... настраивать ведение журнала без изменения кода.

  • Возможно, вам следует ПРОЧИТАТЬ документ log4j вводный , в котором объясняется выше и другие вопросы, касающиеся использования log4j.


Вышеприведенное предполагает, что вы пытались использовать log4j. Вы действительно пытаетесь использовать java.util.logging, некоторые детали не совсем верны. (И, IMO, вам было бы лучше с использованием log4j или одного из его потомков.)

1 голос
/ 03 июня 2011

Вот несколько предложений.

  • Следите за вашими импортами, вы смешиваете Log4j или java.util.logging import
  • нет необходимости дважды вызывать getLogger ()
  • Сделайте что-нибудь со своими исключениями, даже если это означает использование System.out.println () e.printStackTrace () в этом тестовом примере.Если возникли проблемы, вы их прятали.
1 голос
/ 03 июня 2011

Ваш код более или менее в порядке (проверьте импорт) и должен работать правильно, если вы удалите строку:

log.getLogger("");

Тогда будет работать рабочая реализация вашего класса:

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;

public class test {
    public static void main(String[] args) {
    try {
        FileHandler hand = new FileHandler("vk.log");
        Logger log = Logger.getLogger("log_file");
        log.addHandler(hand);
        log.warning("Doing carefully!");
        log.info("Doing something ...");
        log.severe("Doing strictily ");
        System.out.println(log.getName());
    } catch (IOException e) {
        // Handle error.
    }
}

}

Не могли бы вы подробнее объяснить свою проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...