List of usage examples for org.apache.commons.io.input TailerListenerAdapter TailerListenerAdapter
TailerListenerAdapter
From source file:com.hellblazer.process.ProcessStartWatcher.java
public ProcessStartWatcher(ManagedProcess process) { TailerListener listener = new TailerListenerAdapter() { @Override/*from w ww . j a v a 2 s . co m*/ public void handle(String line) { lines.add(line); } }; tailer = process.tailStdOut(listener); }
From source file:com.google.cloud.tools.maven.it.verifier.TailingVerifier.java
private void startTailingLog() { TailerListener listener = new TailerListenerAdapter() { @Override/*from ww w. j a va2 s. c o m*/ public void handle(String line) { System.out.println(testName + ": " + line); } }; // Tail the log File file = new File(getBasedir() + File.separator + getLogFileName()); try { if (file.exists()) { file.delete(); } file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } Tailer tailer = new Tailer(file, listener, TAIL_DELAY_MILLIS); Thread thread = new Thread(tailer); thread.setDaemon(true); thread.start(); }
From source file:com.streamsets.datacollector.websockets.LogMessageWebSocket.java
@Override public void onWebSocketConnect(final Session session) { super.onWebSocketConnect(session); synchronized (LogMessageWebSocket.class) { int maxClients = config.get(MAX_LOGTAIL_CONCURRENT_REQUESTS_KEY, MAX_LOGTAIL_CONCURRENT_REQUESTS_DEFAULT); if (logTailClients < maxClients) { logTailClients++;//from w w w. j av a 2 s . co m } else { session.close(StatusCode.NORMAL, "Maximum concurrent connections reached"); return; } } TailerListener listener = new TailerListenerAdapter() { @Override public void handle(String line) { try { Map<String, String> namedGroupToValuesMap = logFileGrok.extractNamedGroups(line); if (namedGroupToValuesMap == null) { namedGroupToValuesMap = new HashMap<>(); namedGroupToValuesMap.put("exceptionMessagePart", line); } ObjectMapper objectMapper = ObjectMapperFactory.get(); String logDataJson = objectMapper.writer().writeValueAsString(namedGroupToValuesMap); session.getRemote().sendString(logDataJson); } catch (IOException ex) { LOG.warn("Error while sending log line through WebSocket message, {}", ex.toString(), ex); } } @Override public void fileNotFound() { LOG.warn("Log file '{}' does not exist", logFile); } @Override public void handle(Exception ex) { LOG.warn("Error while trying to read log file '{}': {}", logFile, ex.toString(), ex); } }; //TODO send -20K of logFile to session, separator line, then tailer tailer = new Tailer(new File(logFile), listener, 100, true, true); Thread thread = new Thread(tailer, "LogMessageWebSocket-tailLog"); thread.setDaemon(true); thread.start(); }
From source file:net.centro.rtb.monitoringcenter.metrics.system.jvm.GarbageCollectorMetricSet.java
GarbageCollectorMetricSet() {
this.garbageCollectorMXBeans = ManagementFactory.getGarbageCollectorMXBeans();
this.minorGcTimer = new Timer();
this.majorGcTimer = new Timer();
// Determine the location of the gc log file (note that there's not support for rolling gc logs)
String gcLogFilePath = null;//w ww. jav a2 s .com
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
List<String> inputArguments = runtimeMXBean.getInputArguments();
for (String argument : inputArguments) {
if (argument.startsWith(LOG_GC_JVM_PARAM)) {
gcLogFilePath = argument.substring(LOG_GC_JVM_PARAM.length());
break;
}
}
if (gcLogFilePath != null && !gcLogFilePath.trim().isEmpty()) {
final File gcLogFile = new File(gcLogFilePath);
if (gcLogFile.exists()) {
this.fullCollectionsCounter = new AtomicLong();
this.gcLogTailer = Tailer.create(gcLogFile, new TailerListenerAdapter() {
@Override
public void handle(String line) {
if (line != null && line.contains(FULL_GC_LOG_STRING)) {
fullCollectionsCounter.incrementAndGet();
}
}
}, GC_LOG_FILE_TAIL_DELAY_IN_MILLIS);
}
}
// Attach a listener to the GarbageCollectorMXBeans
this.gcEventListener = new NotificationListener() {
@Override
public void handleNotification(Notification notification, Object handback) {
String notificationType = notification.getType();
if (notificationType.equals(GarbageCollectionNotificationInfo.GARBAGE_COLLECTION_NOTIFICATION)) {
CompositeData compositeData = CompositeData.class.cast(notification.getUserData());
GarbageCollectionNotificationInfo gcNotificationInfo = GarbageCollectionNotificationInfo
.from(compositeData);
if (GC_NOTIFICATION_MINOR_GC_ACTION_STRING.equals(gcNotificationInfo.getGcAction())) {
minorGcTimer.update(gcNotificationInfo.getGcInfo().getDuration(), TimeUnit.MILLISECONDS);
} else if (GC_NOTIFICATION_MAJOR_GC_ACTION_STRING.equals(gcNotificationInfo.getGcAction())) {
majorGcTimer.update(gcNotificationInfo.getGcInfo().getDuration(), TimeUnit.MILLISECONDS);
}
}
}
};
for (final GarbageCollectorMXBean garbageCollectorMXBean : garbageCollectorMXBeans) {
if (NotificationEmitter.class.isInstance(garbageCollectorMXBean)) {
NotificationEmitter emitter = NotificationEmitter.class.cast(garbageCollectorMXBean);
emitter.addNotificationListener(gcEventListener, null, null);
}
}
// Set up metrics
Map<String, Metric> metricsByNames = new HashMap<>();
if (fullCollectionsCounter != null) {
this.fullCollectionsGauge = new Gauge<Long>() {
@Override
public Long getValue() {
return fullCollectionsCounter.get();
}
};
metricsByNames.put("fullCollections", fullCollectionsGauge);
}
metricsByNames.put("majorGcTimer", majorGcTimer);
metricsByNames.put("minorGcTimer", minorGcTimer);
List<GarbageCollectorStatus> garbageCollectorStatuses = new ArrayList<>();
for (final GarbageCollectorMXBean garbageCollectorMXBean : garbageCollectorMXBeans) {
final String garbageCollectorName = garbageCollectorMXBean.getName();
final String garbageCollectorNamespace = MetricNamingUtil.join("collectors",
MetricNamingUtil.sanitize(garbageCollectorName));
final Gauge<Long> collectionsGauge;
if (garbageCollectorMXBean.getCollectionCount() >= 0) {
collectionsGauge = new Gauge<Long>() {
@Override
public Long getValue() {
return garbageCollectorMXBean.getCollectionCount();
}
};
metricsByNames.put(MetricNamingUtil.join(garbageCollectorNamespace, "collections"),
collectionsGauge);
} else {
collectionsGauge = null;
}
final Gauge<Long> totalCollectionDurationInMillisGauge;
if (garbageCollectorMXBean.getCollectionTime() >= 0) {
totalCollectionDurationInMillisGauge = new Gauge<Long>() {
@Override
public Long getValue() {
return garbageCollectorMXBean.getCollectionTime();
}
};
metricsByNames.put(
MetricNamingUtil.join(garbageCollectorNamespace, "totalCollectionDurationInMillis"),
totalCollectionDurationInMillisGauge);
} else {
totalCollectionDurationInMillisGauge = null;
}
garbageCollectorStatuses.add(new GarbageCollectorStatus() {
@Override
public String getName() {
return garbageCollectorName;
}
@Override
public Gauge<Long> getCollectionsGauge() {
return collectionsGauge;
}
@Override
public Gauge<Long> getTotalCollectionDurationInMillisGauge() {
return totalCollectionDurationInMillisGauge;
}
});
}
this.garbageCollectorStatuses = garbageCollectorStatuses;
this.metricsByNames = metricsByNames;
}
From source file:com.hellblazer.process.JavaProcessTest.java
public void testTailStdInputOutputStreams() throws Exception { final List<String> lines = new CopyOnWriteArrayList<>(); TailerListener listener = new TailerListenerAdapter() { @Override// w w w .j a v a 2s . com public void handle(String line) { lines.add(line); } }; copyTestClassFile(); JavaProcess process = new JavaProcessImpl(processFactory.create()); String testLine = "hello"; process.setArguments(new String[] { "-readln", testLine }); process.setJavaClass(HelloWorld.class.getCanonicalName()); process.setDirectory(testDir); process.setJavaExecutable(javaBin); Tailer tailer = null; try { launchProcess(process); tailer = process.tailStdOut(listener); try (PrintWriter writer = new PrintWriter(new OutputStreamWriter(process.getStdIn()))) { writer.println(testLine); writer.flush(); } assertEquals("Process exited normally", 0, process.waitFor()); assertTrue("Process not active", !process.isActive()); Utils.waitForCondition(1000, new Condition() { @Override public boolean isTrue() { return lines.size() > 1; } }); assertEquals(2, lines.size()); assertEquals(testLine, lines.get(1)); tailer.stop(); } finally { if (tailer != null) { tailer.stop(); } process.destroy(); } }
From source file:org.apache.directory.studio.ldapservers.LdapServersUtils.java
/** * Starts the console printer thread.//from w ww.j av a 2 s. com * * @param server * the server * @param serverLogsFile * the server logs file */ public static void startConsolePrinterThread(LdapServer server, File serverLogsFile) { MessageConsole messageConsole = ConsolesManager.getDefault().getMessageConsole(server); MessageConsoleStream messageStream = messageConsole.newMessageStream(); /* * DIRSTUDIO-1148: Tail the log file and update the console. * Tail from end only to avoid overwhelming the system in case the log file is large. */ TailerListener l = new TailerListenerAdapter() { public void handle(String line) { messageStream.println(line); }; }; Tailer tailer = Tailer.create(serverLogsFile, l, 1000L, true); // Storing the tailer as a custom object in the LDAP Server for later use server.putCustomObject(CONSOLE_PRINTER_CUSTOM_OBJECT, tailer); }
From source file:org.ngrinder.operation.cotroller.LogMonitorController.java
/** * Initialize the {@link Tailer}./*from www . ja va 2 s. c o m*/ */ private synchronized void initTailer() { File logFile = getLogFile(); if (tailer != null) { tailer.stop(); } tailer = Tailer.create(logFile, new TailerListenerAdapter() { /** * Handles a line from a Tailer. * * @param line * the line. */ public void handle(String line) { synchronized (this) { if (stringBuffer.length() + line.length() > 5000) { count++; modification = 0; stringBuffer = new StringBuffer(); } modification++; if (stringBuffer.length() > 0) { stringBuffer.append("<br>"); } stringBuffer.append(line.replace("\n", "<br>")); } } }, 1000, true); }
From source file:org.onehippo.cms7.launcher.LoggingPanel.java
private void startPolling() { final TailerListener listener = new TailerListenerAdapter() { @Override/*from w w w .ja v a 2 s . co m*/ public void handle(final String line) { try { loggingDocument.insertString(0, System.lineSeparator(), null); loggingDocument.insertString(0, line, null); } catch (BadLocationException e) { throw new RuntimeException(e); } } }; final File catalinaLogFile = getCatalinaLogFile(); final Executor logFilePollingExecutor = Executors.newSingleThreadExecutor(); logFilePollingExecutor.execute(Tailer.create(catalinaLogFile, listener, 100L)); }