Java Logger только для файлов, без вывода на экран

У меня довольно простая проблема, но я не могу найти решение для нее. У меня есть регистратор с обработчиком файлов, но он все еще избавляет меня от моей консоли. Как я могу заставить логгера исключительно перенаправлять весь вывод в файл, без каких-либо выходов консоли?

Ответ 1

Удалите все обработчики (используя Logger.getHandlers() и вызывая Logger.removeHandler() для каждого обработчика) из корневого регистратора перед добавлением обработчика файла.

Ответ 2

Старый вопрос, но чтобы помочь другим разработчикам:

Вы также можете просто использовать logger.setUseParentHandlers(false) в своем журнале.

Ответ 3

Самый простой способ гарантировать, что на консоль ничего не будет записано, нужно поставить:

java.util.logging.ConsoleHandler.level = NONE

в вашем файле конфигурации ведения журнала.

Ответ 4

Использовать log4j с

import org.apache.log4j.Logger;

Logger logger = Logger.getLogger("com.whatever");
PropertyConfigurator.configure("file-log4j.properties");

и установите уровни отображения в файле -log4j.properties:

# Root logger option
log4j.rootLogger=INFO, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=index-service.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.file.Append=false

Ответ 5

Я использую:

Logger logger = Logger.getLogger("MyLog");
    Logger parentLog= logger.getParent();
    if (parentLog!=null&&parentLog.getHandlers().length>0) parentLog.removeHandler(parentLog.getHandlers()[0]);