Проблема с регистратором Java - PullRequest
0 голосов
/ 17 марта 2011

Я хотел бы записать логи моего Java-приложения.Я создал этот класс:

public class Log {

    final Logger logger = Logger.getLogger("DigiScope.log");

    public static void main(String[] args) {
    }

    public Log(String message) {
        try {
            // Create an appending file handler
            boolean append = true;
            FileHandler handler = new FileHandler("my.log", append);

            // Add to the desired logger
            Logger logger = Logger.getLogger("com.mycompany");
            logger.addHandler(handler);
            logger.info(message);

        } catch (IOException e) {
        }

    }
}

И для каждой кнопки у меня есть такой код:

private void btnNewPatient ActionPerformed(java.awt.event.ActionEvent evt) {
Log a = new Log("New Patient created");
}

Этот код создает log.txt, но записывает только щелчокПервая кнопка, остальные нажимают на другие кнопки, не записываются.

Вы можете мне помочь?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 17 марта 2011

Нет смысла создавать в вашем приложении собственную оболочку для ведения журналов - java.util.logging уже является такой оболочкой, поэтому я рекомендую использовать ее напрямую. Вы должны создать объекты logger в ваших классах, а затем записывать сообщения в методы-обработчики примерно так:

logger.info("New Patient created");

И вы должны использовать один и тот же экземпляр Logger в вашем классе, вместо того, чтобы создавать новые экземпляры постоянно. Стандартным способом является создание одного static final экземпляра на класс.

Также лучше настроить ведение журнала из файла конфигурации, а не из кода.

Я рекомендую прочитать Учебник по ведению журналов Java .

1 голос
/ 17 марта 2011

Петер Тёрёк и StriplingWarrior правы, предлагая правильно использовать каркас ведения журнала:

logger.info("New Patient created");

вместо создания нового регистратора для каждого оператора.


Но даже с вашей конструкцией у вас должен быть лог-файл со всей информацией логов.Для каждого вызова конструктора Log создается новый файл my.log.X (X - число).И с этого момента каждый оператор журнала регистрируется в этом файле.

Так что, если вы вызываете конструктор три раза (с сообщением: «первый», «второй», «третий»), то вы должны иметьфайлы: my.log, my.log.1.my.log.2

  • my.log: «первый», «второй», «третий»
  • my.log.1: «второй», «третий»
  • my.log.2: «третий»
0 голосов
/ 17 марта 2011

Я предполагаю, что он, вероятно, регистрирует каждый клик, но вы открываете файл при каждом новом сообщении, а не добавляете его.

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