This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin-on-parquet-v2 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit c4d3168268f189aaec4e7406d08dcc10fffb2888 Author: zl03 <zhuleiwe...@163.com> AuthorDate: Mon Nov 23 15:37:54 2020 +0800 KYLIN-4813 Add download all log link in front-end --- .../engine/spark/common/logging/SparkExecutorHdfsAppender.java | 4 ++-- webapp/app/js/controllers/job.js | 10 +++++++++- webapp/app/partials/jobs/job_steps.html | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/kylin-spark-project/kylin-spark-common/src/main/java/org/apache/kylin/engine/spark/common/logging/SparkExecutorHdfsAppender.java b/kylin-spark-project/kylin-spark-common/src/main/java/org/apache/kylin/engine/spark/common/logging/SparkExecutorHdfsAppender.java index 381fd2d..d8b250f 100644 --- a/kylin-spark-project/kylin-spark-common/src/main/java/org/apache/kylin/engine/spark/common/logging/SparkExecutorHdfsAppender.java +++ b/kylin-spark-project/kylin-spark-common/src/main/java/org/apache/kylin/engine/spark/common/logging/SparkExecutorHdfsAppender.java @@ -42,8 +42,8 @@ public class SparkExecutorHdfsAppender extends AbstractHdfsLogAppender { private static final long A_DAY_MILLIS = 24 * 60 * 60 * 1000L; private static final long A_HOUR_MILLIS = 60 * 60 * 1000L; - private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); - private SimpleDateFormat hourFormat = new SimpleDateFormat("HH"); + private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ROOT); + private SimpleDateFormat hourFormat = new SimpleDateFormat("HH", Locale.ROOT); @VisibleForTesting String outPutPath; diff --git a/webapp/app/js/controllers/job.js b/webapp/app/js/controllers/job.js index a2fed31..a36a049 100644 --- a/webapp/app/js/controllers/job.js +++ b/webapp/app/js/controllers/job.js @@ -354,6 +354,9 @@ KylinApp }, attr: function () { return $scope.state.stepAttrToShow; + }, + job: function () { + return $scope.state.selectedJob; } } }); @@ -361,10 +364,15 @@ KylinApp } ); -var jobStepDetail = function ($scope, $modalInstance, step, attr) { +var jobStepDetail = function ($scope, $modalInstance, $window, step, attr, job) { $scope.step = step; $scope.stepAttrToShow = attr; + $scope.job = job; $scope.cancel = function () { $modalInstance.dismiss('cancel'); } + $scope.downloadAllLogs =function () { + var downloadUrl = Config.service.url + 'jobs/'+ job.uuid +'/steps/'+ step.id +'/log' + '?project=' + job.projectName; + $window.open(downloadUrl); + } }; diff --git a/webapp/app/partials/jobs/job_steps.html b/webapp/app/partials/jobs/job_steps.html index 993b302..13516c1 100644 --- a/webapp/app/partials/jobs/job_steps.html +++ b/webapp/app/partials/jobs/job_steps.html @@ -161,6 +161,7 @@ <div class="modal-header"> <h4>{{stepAttrToShow == 'cmd' ? 'Parameters' : 'Output'}} <i ng-if="stepAttrToShow == 'output' && step.loadingOp" class="fa fa-spinner fa-spin"></i></h4> + The output log shows the first and last 100 lines by default. To view all the output, please click to <a ng-click="downloadAllLogs()">download the log file</a >. </div> <div class="modal-body"> <pre>{{stepAttrToShow == 'cmd' ? step.exec_cmd : (step.loadingOp ? "Loading..." : !!(step.cmd_output)?step.cmd_output:'No Data Available')}}</pre>