У меня довольно простая проблема, но я не могу найти решение для нее. У меня есть регистратор с обработчиком файлов, но он все еще избавляет меня от моей консоли. Как я могу заставить логгера исключительно перенаправлять весь вывод в файл, без каких-либо выходов консоли?
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]);