private void printLocalLogFileDirectory(Block html, List<File> containerLogsDirs) { // Print out log types in lexical order Collections.sort(containerLogsDirs); boolean foundLogFile = false; for (File containerLogsDir : containerLogsDirs) { File[] logFiles = containerLogsDir.listFiles(); if (logFiles != null) { Arrays.sort(logFiles); for (File logFile : logFiles) { foundLogFile = true; html.p() .a(url("containerlogs", $(CONTAINER_ID), $(APP_OWNER), logFile.getName(), "?start=-4096"), logFile.getName() + " : Total file length is " + logFile.length() + " bytes.").__(); } } } if (!foundLogFile) { html.h1("No logs available for container " + $(CONTAINER_ID)); return; } }
if (toRead < logFile.length()) { html.p().__("Showing " + toRead + " bytes. Click ") .a(url("containerlogs", $(CONTAINER_ID), $(APP_OWNER), logFile.getName(), "?start=0"), "here"). __(" for full log").__();
String fileName = createAggregatedLogFileName(fileInfo.getFileName(), fileInfo.getLastModifiedTime()); html.p().a(url("containerlogs", $(CONTAINER_ID), $(APP_OWNER), fileInfo.getFileName(), "?start=-4096&" + LOG_AGGREGATION_TYPE + "="
protected long[] checkParseRange(Block html, long startIndex, long endIndex, long startTime, long endTime, long logLength, String logType) { long start = startIndex < 0 ? logLength + startIndex : startIndex; start = start < 0 ? 0 : start; start = start > logLength ? logLength : start; long end = endIndex < 0 ? logLength + endIndex : endIndex; end = end < 0 ? 0 : end; end = end > logLength ? logLength : end; end = end < start ? start : end; long toRead = end - start; if (toRead < logLength) { html.p().__("Showing " + toRead + " bytes of " + logLength + " total. Click ").a(url("logs", $(NM_NODENAME), $(CONTAINER_ID), $(ENTITY_STRING), $(APP_OWNER), logType, "?start=0&start.time=" + startTime + "&end.time=" + endTime), "here"). __(" for the full log.").__(); } return new long[]{start, end}; }
@Override public P<T> a(String selector, String href, String anchorText) { return setSelector(a(), selector).$href(href).__(anchorText).__(); }
@Override public P<T> a(String href, String anchorText) { return a().$href(href).__(anchorText).__(); }
@Override public A<P<T>> a(String selector) { return setSelector(a(), selector); }