Запись разных логов в разные файлы. Но все журналы идут в одном файле

Я использую библиотеку java.util.logging для ведения журнала.

Мой код выглядит следующим образом:

package com.test.vesrionControlSystem.services;

import java.io.IOException;
import java.util.Date;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
import java.util.logging.Logger;

public class TestMain {

    public static void main(String[] args) throws IOException, InterruptedException {
        // TODO Auto-generated method stub

        Logger logger = Logger.getLogger(TestMain.class.getName());
        Logger logger1= Logger.getLogger(TestMain.class.getName());
        FileHandler fh = new FileHandler("D:\\Logs\\FirstLogs.%g.log", 10000, 20, true);
        FileHandler fh1 = new FileHandler("F:\\Logs\\SecondLogs.%g.log", 10000, 20, true);
        fh.setFormatter(new Formatter() {

          @Override
          public String format(LogRecord record) {
            return new Date(record.getMillis()) + " " + record.getLevel() + ": " + record.getMessage() + "\n";
          }
        });

        fh1.setFormatter(new Formatter() {

              @Override
              public String format(LogRecord record) {
                return new Date(record.getMillis()) + " " + record.getLevel() + ": " + record.getMessage() + "\n";
              }
        });

        logger.addHandler(fh);
        logger1.addHandler(fh1);

        while(true) {
            logger.info("printing info");
            Thread.sleep(100);
            logger1.warning("printing warning");
            Thread.sleep(100);
            logger.severe("Printing error");
            Thread.sleep(100);
        }   
    }
}

Здесь информация и серьезные сообщения должны быть напечатаны в файле firstLogs.log, а предупреждающие сообщения должны быть напечатаны в файле secondLogs.log.

Но я вижу все три сообщения (информация, предупреждение и серьезное) в обоих файлах.

Пожалуйста, помогите мне понять, что мне здесь не хватает.


person Parag Vinchurkar    schedule 04.06.2020    source источник


Ответы (2)


Это похоже на тот, на который я недавно ответил, но это было для log4j. пожалуйста, проверьте это Как создать другой файл журнала с другим содержимым, используя log4 в конфигурации Java

person Nagaraddi    schedule 04.06.2020

Основная проблема заключается в том, что logger и logger1 являются одним и тем же именем в вашем тестовом коде. Измените имена:

    Logger logger = Logger.getLogger(TestMain.class.getName() + ".0");
    Logger logger1= Logger.getLogger(TestMain.class.getName() + ".1");

Если вы хотите фильтровать с помощью того же регистратора, см. раздел использование обработчика журнала.

person jmehrens    schedule 04.06.2020