Журнал действий Jenkins за пределами журналов Jenkins - PullRequest
0 голосов
/ 05 июня 2018

Я хочу записать некоторые сообщения INFO в отдельный файл вне var / jenkins / logs (местоположение журнала по умолчанию Jenkins), но я не смог найти никаких рабочих примеров.

Вход в журналы Jenkinsпросто:

static final Logger LOGGER = Logger.getLogger([YOUR_CLASS_NAME].class.getName());
LOGGER.log(Level.INFO, [MESSAGE]);

, но я не уверен, как регистрировать сообщения в отдельном файле.

Любая помощь очень ценится!

Добавление после ответа

Контекст, из которого я хочу войти, находится в пользовательском плагине, который я написал, где я в основном перезаписываю компаратор по умолчанию в Jenkins своим собственным.Исходя из определенных критериев, задания рассматриваются как более приоритетные, чем другие, в очереди на сборку.

@Override
public int compare(Queue.BuildableItem lhs, Queue.BuildableItem rhs) {
    if (shouldBePrioritized(lhs) && !shouldBePrioritized(rhs)) {
        LOGGER.log(Level.INFO, "[BQP] Comparing " + lhs.task.getName() + "and " + rhs.task.getName() + ". Result: " + lhs.task.getName());
        return -1;
    }
    if (shouldBePrioritized(rhs) && !shouldBePrioritized((lhs))) {
        LOGGER.log(Level.INFO, "[BQP] Comparing " + lhs.task.getName() + "and " + rhs.task.getName() + ". Result: " + rhs.task.getName());
        return 1;
    }
    LOGGER.log(Level.INFO, "[BQP] Comparing " + lhs.task.getName() + "and " + rhs.task.getName() + ". Result: equal");
    return super.compare(lhs, rhs);
}

В настоящее время я использую этот LOGGER.log (), который записывает сравнения в журналы Jenkins, но я хотел бы войтисравнения в отдельном файле на виртуальной машине, в котором находится контейнер Docker, на котором работает Jenkins, но я считаю, что это выходит за рамки вопроса.Пока все в порядке, если мне удастся записать эту информацию в файл в контейнере Jenkins.

Спасибо!

1 Ответ

0 голосов
/ 05 июня 2018

Вы должны добавить собственный обработчик для получаемого регистратора.

static final LOGGER = createLogger();

private static Logger createLogger() {
    Logger logger = Logger.getLogger(MyClass.class.getName());
    FileHandler handler = new FileHandler("/tmp/mylog.log", 1024 * 1024, 10, true); // You can use any variable as a first argument, including some constants from other classes too!
    handler.setFormatter(new SimpleFormatter());
    logger.addHandler(handler);
    return logger;
}

Документация объясняет это здесь (в Groovy, но синтаксис в Java такой же, за исключениемточка с запятой в конце строки).

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

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