Пытается использовать java.util.logging
и не удается.Java - настройка пользовательских регистраторов для использования
В попытке сделать использование https://stackoverflow.com/a/8249319/3322533:
handlers = mypackage.logging.RequestFileHandler, mypackage.logging.MainFileHandler
config =
mainLogger.handlers = mypackage.logging.MainFileHandler
requestLogger.handlers = mypackage.logging.RequestFileHandler
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.filter =
java.util.logging.ConsoleHandler.formatter = mypackage.logging.VerySimpleFormatter
java.util.logging.ConsoleHandler.encoding =
mypackage.RequestFileHandler.level = SEVERE
mypackage.RequestFileHandler.filter =
mypackage.RequestFileHandler.formatter = mypackage.logging.VerySimpleFormatter
mypackage.RequestFileHandler.encoding =
mypackage.RequestFileHandler.limit =
mypackage.RequestFileHandler.count =
mypackage.RequestFileHandler.append = false
mypackage.RequestFileHandler.pattern = REQUESTS.%u.%g.log
mypackage.MainFileHandler.level = INFO
mypackage.MainFileHandler.filter =
mypackage.MainFileHandler.formatter = mypackage.logging.VerySimpleFormatter
mypackage.MainFileHandler.encoding =
mypackage.MainFileHandler.limit =
mypackage.MainFileHandler.count =
mypackage.MainFileHandler.append = false
mypackage.MainFileHandler.pattern = MAIN.%u.%g.log
где
public class MainFileHandler extends FileHandler {
public MainFileHandler() throws IOException, SecurityException {
super();
}
}
и
public class RequestFileHandler extends FileHandler {
public RequestFileHandler() throws IOException, SecurityException {
super();
}
}
Намерение: обеспечить два регистраторы, доступные через
Logger.getLogger("mainLogger");
или
Logger.getLogger("requestLogger");
соответственно, один, который будет писать (исключительно) к MAIN[...].log
, а другой REQUESTS[...].log
(Нет ограничений на количество сообщений, которые могут быть зарегистрированы в любой файл и при необходимости использовать уровень протоколирования, чтобы отфильтровать нежелательные сбщ либо.)
Однако ни файл создается, когда я (к примеру)
public static final Logger log = Logger.getLogger("mainLogger");
, а затем
public void configureLogger(){
try {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream config = classLoader.getResourceAsStream("logging.properties");
LogManager.getLogManager().readConfiguration(config);
}catch(Exception ex){
throw new RuntimeException("logging properties failed");
}
}
, прежде чем я
log.info("Hello World!")
Я знаю, свойства загружаются, потому что, когда я включаю java.util.logging.ConsoleHandler
в handlers = ...
списке и использовать глобальный регистратор, вместо этого, форматировщик применяется для консольный выход.
Итак ... Я думаю, что моя попытка настроить регистраторы файлов является неисправной. Как мне это сделать?
EDIT
Так что я удалил [...].pattern = [...]
линии и вместо того, чтобы жёстко имена файлов:
public class MainFileHandler extends FileHandler implements FileHandlerProperties {
public MainFileHandler() throws IOException, SecurityException {
super("MAIN_" + new SimpleDateFormat(TIME_PATTERN).format(new Date()) + ".log");
}
}
и
public class RequestFileHandler extends FileHandler implements FileHandlerProperties {
public RequestFileHandler() throws IOException, SecurityException {
super("REQUESTS_" + new SimpleDateFormat(TIME_PATTERN).format(new Date()) + ".log");
}
}
где
public interface FileHandlerProperties {
static final String TIME_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";
}
Оба файла теперь получить создан, но они и содержат точно так же (несмотря на их различные настройки уровня и регистраторы) И то, что они содержат в XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
<record>
<date>2016-10-10T18:49:23</date>
<millis>1476118163654</millis>
<sequence>0</sequence>
<logger>mainLogger</logger>
<level>INFO</level>
<class>mypackage.main.Main</class>
<method><init></method>
<thread>1</thread>
<message>Hello World</message>
</record>
</log>
Пожалуйста, помогите ...
Удалить символы '' 'из вашего файла свойств. – VGR
@VGR Убрано' '' '', похоже, не имеет никакого значения. – User1291