void processScanAttrib(InterpretationContext ic, Attributes attributes) { String scanAttrib = ic.subst(attributes.getValue(SCAN_ATTR)); if (!OptionHelper.isEmpty(scanAttrib) && !"false".equalsIgnoreCase(scanAttrib)) { ScheduledExecutorService scheduledExecutorService = context.getScheduledExecutorService(); URL mainURL = ConfigurationWatchListUtil.getMainWatchURL(context); if (mainURL == null) { addWarn("Due to missing top level configuration file, reconfiguration on change (configuration file scanning) cannot be done."); return; } ReconfigureOnChangeTask rocTask = new ReconfigureOnChangeTask(); rocTask.setContext(context); context.putObject(CoreConstants.RECONFIGURE_ON_CHANGE_TASK, rocTask); String scanPeriodAttrib = ic.subst(attributes.getValue(SCAN_PERIOD_ATTR)); Duration duration = getDuration(scanAttrib, scanPeriodAttrib); if (duration == null) { return; } addInfo("Will scan for changes in [" + mainURL + "] "); // Given that included files are encountered at a later phase, the complete list of files // to scan can only be determined when the configuration is loaded in full. // However, scan can be active if mainURL is set. Otherwise, when changes are detected // the top level config file cannot be accessed. addInfo("Setting ReconfigureOnChangeTask scanning period to " + duration); ScheduledFuture<?> scheduledFuture = scheduledExecutorService.scheduleAtFixedRate(rocTask, duration.getMilliseconds(), duration.getMilliseconds(), TimeUnit.MILLISECONDS); context.addScheduledFuture(scheduledFuture); } }
public static Duration buildByMilliseconds(double value) { return new Duration((long) (value)); }
public static Duration valueOf(String durationStr) { Matcher matcher = DURATION_PATTERN.matcher(durationStr); if (matcher.matches()) { String doubleStr = matcher.group(DOUBLE_GROUP); String unitStr = matcher.group(UNIT_GROUP); double doubleValue = Double.valueOf(doubleStr); if (unitStr.equalsIgnoreCase("milli") || unitStr.equalsIgnoreCase("millisecond") || unitStr.length() == 0) { return buildByMilliseconds(doubleValue); } else if (unitStr.equalsIgnoreCase("second") || unitStr.equalsIgnoreCase("seconde")) { return buildBySeconds(doubleValue); } else if (unitStr.equalsIgnoreCase("minute")) { return buildByMinutes(doubleValue); } else if (unitStr.equalsIgnoreCase("hour")) { return buildByHours(doubleValue); } else if (unitStr.equalsIgnoreCase("day")) { return buildByDays(doubleValue); } else { throw new IllegalStateException("Unexpected " + unitStr); } } else { throw new IllegalArgumentException("String value [" + durationStr + "] is not in the expected format."); } }
void processScanAttrib(InterpretationContext ic, Attributes attributes) { String scanAttrib = ic.subst(attributes.getValue(SCAN_ATTR)); if (!OptionHelper.isEmpty(scanAttrib) && !"false".equalsIgnoreCase(scanAttrib)) { ReconfigureOnChangeFilter rocf = new ReconfigureOnChangeFilter(); rocf.setContext(context); String scanPeriodAttrib = ic.subst(attributes.getValue(SCAN_PERIOD_ATTR)); if (!OptionHelper.isEmpty(scanPeriodAttrib)) { try { Duration duration = Duration.valueOf(scanPeriodAttrib); rocf.setRefreshPeriod(duration.getMilliseconds()); addInfo("Setting ReconfigureOnChangeFilter scanning period to " + duration); } catch (NumberFormatException nfe) { addError("Error while converting [" + scanAttrib + "] to long", nfe); } } rocf.start(); LoggerContext lc = (LoggerContext) context; addInfo("Adding ReconfigureOnChangeFilter as a turbo filter"); lc.addTurboFilter(rocf); } }
private Duration getDuration(String scanAttrib, String scanPeriodAttrib) { Duration duration = null; if (!OptionHelper.isEmpty(scanPeriodAttrib)) { try { duration = Duration.valueOf(scanPeriodAttrib); } catch (NumberFormatException nfe) { addError("Error while converting [" + scanAttrib + "] to long", nfe); } } return duration; }
private Duration getDurationOfScanPeriodAttribute(String scanPeriodAttrib, Duration defaultDuration) { Duration duration = null; if (!OptionHelper.isEmpty(scanPeriodAttrib)) { Exception ex = null; try { duration = Duration.valueOf(scanPeriodAttrib); } catch (IllegalArgumentException e) { ex = e; } catch (IllegalStateException e) { ex = e; } if (ex != null) { addWarn("Failed to parse 'scanPeriod' attribute ["+scanPeriodAttrib+"]", ex); } } if (duration == null) { addInfo("No 'scanPeriod' specified. Defaulting to " + defaultDuration.toString()); duration = defaultDuration; } return duration; }
Duration d = Duration.valueOf("12"); assertEquals(12, d.getMilliseconds()); Duration d = Duration.valueOf("159 milli"); assertEquals(159, d.getMilliseconds()); Duration d = Duration.valueOf("15 millis"); assertEquals(15, d.getMilliseconds()); Duration d = Duration.valueOf("8 milliseconds"); assertEquals(8, d.getMilliseconds()); Duration d = Duration.valueOf("10.7 millisecond"); assertEquals(10, d.getMilliseconds()); Duration d = Duration.valueOf("10 SECOnds"); assertEquals(10 * 1000, d.getMilliseconds()); Duration d = Duration.valueOf("12seconde"); assertEquals(12 * 1000, d.getMilliseconds()); Duration d = Duration.valueOf("14 SECONDES"); assertEquals(14 * 1000, d.getMilliseconds()); Duration d = Duration.valueOf("12second"); assertEquals(12 * 1000, d.getMilliseconds()); Duration d = Duration.valueOf("10.7 seconds"); assertEquals(10700, d.getMilliseconds());
/** * Set the maximum history in time duration of records to keep * * @param maxHistory * max history in time duration (e.g., "2 days") */ public void setMaxHistory(String maxHistory) { this.maxHistory = Duration.valueOf(maxHistory); }
public static Duration valueOf(String durationStr) { Matcher matcher = DURATION_PATTERN.matcher(durationStr); if (matcher.matches()) { String doubleStr = matcher.group(DOUBLE_GROUP); String unitStr = matcher.group(UNIT_GROUP); double doubleValue = Double.valueOf(doubleStr); if (unitStr.equalsIgnoreCase("milli") || unitStr.equalsIgnoreCase("millisecond") || unitStr.length() == 0) { return buildByMilliseconds(doubleValue); } else if (unitStr.equalsIgnoreCase("second") || unitStr.equalsIgnoreCase("seconde")) { return buildBySeconds(doubleValue); } else if (unitStr.equalsIgnoreCase("minute")) { return buildByMinutes(doubleValue); } else if (unitStr.equalsIgnoreCase("hour")) { return buildByHours(doubleValue); } else if (unitStr.equalsIgnoreCase("day")) { return buildByDays(doubleValue); } else { throw new IllegalStateException("Unexpected " + unitStr); } } else { throw new IllegalArgumentException("String value [" + durationStr + "] is not in the expected format."); } }
/** * {@inheritDoc} */ @Override protected void append(E event) { if (event == null || !isStarted()) return; try { final boolean inserted = queue.offer(event, eventDelayLimit.getMilliseconds(), TimeUnit.MILLISECONDS); if (!inserted) { addInfo("Dropping event due to timeout limit of [" + eventDelayLimit + "] milliseconds being exceeded"); } } catch (InterruptedException e) { addError("Interrupted while appending event to SocketAppender", e); } }
public static Duration buildByHours(double value) { return new Duration((long) (HOURS_COEFFICIENT * value)); }
void processScanAttrib(Attributes attributes) { String scanAttrib = attributes.getValue(SCAN_ATTR); if (!OptionHelper.isEmpty(scanAttrib) && !"false".equalsIgnoreCase(scanAttrib)) { ReconfigureOnChangeFilter rocf = new ReconfigureOnChangeFilter(); rocf.setContext(context); String scanPeriodAttrib = attributes.getValue(SCAN_PERIOD_ATTR); if (!OptionHelper.isEmpty(scanPeriodAttrib)) { try { Duration duration = Duration.valueOf(scanPeriodAttrib); rocf.setRefreshPeriod(duration.getMilliseconds()); addInfo("Setting ReconfigureOnChangeFilter scanning period to " + duration); } catch (NumberFormatException nfe) { addError("Error while converting [" + scanAttrib + "] to long", nfe); } } rocf.start(); LoggerContext lc = (LoggerContext) context; addInfo("Adding ReconfigureOnChangeFilter as a turbo filter"); lc.addTurboFilter(rocf); } }
private Duration getDuration(String scanAttrib, String scanPeriodAttrib) { Duration duration = null; if (!OptionHelper.isEmpty(scanPeriodAttrib)) { try { duration = Duration.valueOf(scanPeriodAttrib); } catch (NumberFormatException nfe) { addError("Error while converting [" + scanAttrib + "] to long", nfe); } } return duration; }
public static Duration valueOf(String durationStr) { Matcher matcher = DURATION_PATTERN.matcher(durationStr); if (matcher.matches()) { String doubleStr = matcher.group(DOUBLE_GROUP); String unitStr = matcher.group(UNIT_GROUP); double doubleValue = Double.valueOf(doubleStr); if (unitStr.equalsIgnoreCase("milli") || unitStr.equalsIgnoreCase("millisecond") || unitStr.length() == 0) { return buildByMilliseconds(doubleValue); } else if (unitStr.equalsIgnoreCase("second") || unitStr.equalsIgnoreCase("seconde")) { return buildBySeconds(doubleValue); } else if (unitStr.equalsIgnoreCase("minute")) { return buildByMinutes(doubleValue); } else if (unitStr.equalsIgnoreCase("hour")) { return buildByHours(doubleValue); } else if (unitStr.equalsIgnoreCase("day")) { return buildByDays(doubleValue); } else { throw new IllegalStateException("Unexpected " + unitStr); } } else { throw new IllegalArgumentException("String value [" + durationStr + "] is not in the expected format."); } }
/** * {@inheritDoc} */ public final void run() { signalEntryInRunMethod(); try { while (!Thread.currentThread().isInterrupted()) { SocketConnector connector = createConnector(address, port, 0, reconnectionDelay.getMilliseconds()); connectorTask = activateConnector(connector); if(connectorTask == null) break; socket = waitForConnectorToReturnASocket(); if(socket == null) break; dispatchEvents(); } } catch (InterruptedException ex) { assert true; // ok... we'll exit now } addInfo("shutting down"); }
public static Duration buildUnbounded() { return new Duration(Long.MAX_VALUE); }
void processScanAttrib(InterpretationContext ic, Attributes attributes) { String scanAttrib = ic.subst(attributes.getValue(SCAN_ATTR)); if (!OptionHelper.isEmpty(scanAttrib) && !"false".equalsIgnoreCase(scanAttrib)) { ReconfigureOnChangeFilter rocf = new ReconfigureOnChangeFilter(); rocf.setContext(context); String scanPeriodAttrib = ic.subst(attributes.getValue(SCAN_PERIOD_ATTR)); if (!OptionHelper.isEmpty(scanPeriodAttrib)) { try { Duration duration = Duration.valueOf(scanPeriodAttrib); rocf.setRefreshPeriod(duration.getMilliseconds()); addInfo("Setting ReconfigureOnChangeFilter scanning period to " + duration); } catch (NumberFormatException nfe) { addError("Error while converting [" + scanAttrib + "] to long", nfe); } } rocf.start(); LoggerContext lc = (LoggerContext) context; addInfo("Adding ReconfigureOnChangeFilter as a turbo filter"); lc.addTurboFilter(rocf); } }
private Duration getDuration(String scanAttrib, String scanPeriodAttrib) { Duration duration = null; if (!OptionHelper.isEmpty(scanPeriodAttrib)) { try { duration = Duration.valueOf(scanPeriodAttrib); } catch (NumberFormatException nfe) { addError("Error while converting [" + scanAttrib + "] to long", nfe); } } return duration; }
public static Duration valueOf(String durationStr) { Matcher matcher = DURATION_PATTERN.matcher(durationStr); if (matcher.matches()) { String doubleStr = matcher.group(DOUBLE_GROUP); String unitStr = matcher.group(UNIT_GROUP); double doubleValue = Double.valueOf(doubleStr); if (unitStr.equalsIgnoreCase("milli") || unitStr.equalsIgnoreCase("millisecond") || unitStr.length() == 0) { return buildByMilliseconds(doubleValue); } else if (unitStr.equalsIgnoreCase("second") || unitStr.equalsIgnoreCase("seconde")) { return buildBySeconds(doubleValue); } else if (unitStr.equalsIgnoreCase("minute")) { return buildByMinutes(doubleValue); } else if (unitStr.equalsIgnoreCase("hour")) { return buildByHours(doubleValue); } else if (unitStr.equalsIgnoreCase("day")) { return buildByDays(doubleValue); } else { throw new IllegalStateException("Unexpected " + unitStr); } } else { throw new IllegalArgumentException("String value [" + durationStr + "] is not in the expected format."); } }
/** * Gets the maximum history in milliseconds * @return the max history in milliseconds */ public long getMaxHistoryMs() { return maxHistory != null ? maxHistory.getMilliseconds() : 0; }