/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ function getLogPath(type, id) { if (type == "session") { return "/sessions/" + id + "/log"; } else if (type == "batch") { return "/batches/" + id + "/log"; } else { return ""; } } function logHeader(name) { return "

" + name + "

"; } function parseLog(logLines) { // display non-standard log formats if (!logLines[0].startsWith("stdout")) { return preWrap(logLines.join("\n")); } var stderrIndex = 0; var stdoutLines = logLines; var stderrLines = []; var yarnDiagLines = null; for (var i = 1; i < logLines.length; i++) { if (stderrIndex == 0 && logLines[i].startsWith("\nstderr")) { stdoutLines = logLines.slice(1, i); stderrLines = logLines.slice(i, logLines.length); stderrIndex = i; } else if (logLines[i].startsWith("\nYARN Diagnostics")) { stderrLines = logLines.slice(stderrIndex + 1, i); yarnDiagLines = logLines.slice(i + 1, logLines.length); break; } } var stdoutLog = logHeader("stdout") + preWrap(stdoutLines.join("\n")); var stderrLog = logHeader("stderr") + preWrap(stderrLines.join("\n")); var yarnDiagLog = ""; if (yarnDiagLines != null) { yarnDiagLog = "

YARN Diagnostics

" + preWrap(yarnDiagLines.join("\n")); } return stdoutLog + stderrLog + yarnDiagLog; } $(document).ready(function () { var pathArr = getPathArray(); var type = pathArr.shift(); var id = pathArr.shift(); $.getJSON(location.origin + prependBasePath(getLogPath(type, id)), {size: -1}, function(response) { if (response) { $("#session-log").append(parseLog(response.log)); $('#session-log [data-toggle="tooltip"]').tooltip(); $("#session-log pre").each(function () { $(this).scrollTop($(this)[0].scrollHeight); }); } }); });