В журнале Java, как я могу добавить проверить, чтобы увидеть, если они выводят код определенного уровня журнала - PullRequest
0 голосов
/ 31 августа 2018

Я делаю программу, которая использует собственную библиотеку, которую я создал. Они оба используют класс ведения журнала утилит Java и создают файлы журналов. Я хочу иметь код, который установит логическое значение true, если журнал сделан с уровнем WARNING. Помимо сканирования файла журнала в поисках Предупреждающих комментариев, что я могу сделать, чтобы добиться этого?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Создать java.util.logging.Filter , который ищет сообщение уровня WARNING . Установите этот фильтр на Handler корневого регистратора.

public class WarningFilter implements Filter {

    @Override
    public boolean isLoggable(LogRecord record) {
        if (Level.WARNING.equals(record.getLevel())) {
           //Set your boolean.
        }
        return true; //Allow all records to pass.
    }
}
0 голосов
/ 01 сентября 2018

Вместо того, чтобы пытаться анализировать файл журнала, я бы изменил реализацию библиотеки, сделав что-то вроде этого:

class Parser {
    private List<String> warnings = new ArrayList<>();

    public Boolean hasWarnings() {
        return warnings.size() > 0
    }

    public List<String> getWarnings() {
        return warnings;
    }

    public Object parse(String xml) {
        // parse the xml

        if (needToIssueWarning) {
            String msg = "warning!";
            warnings.add(msg);
            logger.warn(msg);
        }

        return parsedData;
    }
}

и на сайте звонка:

private void run() {
    Parser parser = new Parser();
    parsedData = parse(xmlString);
    if (parser.hasWarnings()) {
        warnings = parser.getWarnings();
        //do something with the warnings
    }
}

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

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