List of usage examples for org.apache.commons.io.input Tailer create
public static Tailer create(File file, TailerListener listener, long delay)
From source file:com.svds.tailer2kafka.main.Main.java
/** * Run tailer until interrupted// w w w. j a v a 2s.com * * @param cmd */ public void doWork(CommandLine cmd) throws InterruptedException { shutdownThread = new ShutdownThread(this); Runtime.getRuntime().addShutdownHook(shutdownThread); listener = new MyListener(); listener.setTopicName(cmd.getOptionValue(TOPICNAME)); listener.setMetadataBrokerList(cmd.getOptionValue(METADATABROKERLIST)); tailer = Tailer.create(new File(cmd.getOptionValue(FILENAME)), listener, 500); while (true) { Thread.sleep(100000); } }
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;/*from www.j ava2s .c om*/
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:org.onehippo.cms7.launcher.LoggingPanel.java
private void startPolling() { final TailerListener listener = new TailerListenerAdapter() { @Override/*from w w w.j a va 2s. c om*/ 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)); }
From source file:org.sonarqube.qa.util.LogsTailer.java
private LogsTailer(Builder builder) { logConsumer = new LogConsumer(builder.consumers); tailers = builder.files.stream().map(file -> Tailer.create(file, logConsumer, 500)) .collect(Collectors.toList()); }