diff --git a/app/kubernetes/views/applications/logs/logs.html b/app/kubernetes/views/applications/logs/logs.html
index eaefc6417..6c9f1e19e 100644
--- a/app/kubernetes/views/applications/logs/logs.html
+++ b/app/kubernetes/views/applications/logs/logs.html
@@ -46,6 +46,13 @@
+
+
+
diff --git a/app/kubernetes/views/applications/logs/logsController.js b/app/kubernetes/views/applications/logs/logsController.js
index a7d761dd5..015d31c0e 100644
--- a/app/kubernetes/views/applications/logs/logsController.js
+++ b/app/kubernetes/views/applications/logs/logsController.js
@@ -1,14 +1,17 @@
import angular from 'angular';
+import _ from 'lodash-es';
class KubernetesApplicationLogsController {
/* @ngInject */
- constructor($async, $state, $interval, Notifications, KubernetesApplicationService, KubernetesPodService) {
+ constructor($async, $state, $interval, Notifications, KubernetesApplicationService, KubernetesPodService, Blob, FileSaver) {
this.$async = $async;
this.$state = $state;
this.$interval = $interval;
this.Notifications = Notifications;
this.KubernetesApplicationService = KubernetesApplicationService;
this.KubernetesPodService = KubernetesPodService;
+ this.Blob = Blob;
+ this.FileSaver = FileSaver;
this.onInit = this.onInit.bind(this);
this.stopRepeater = this.stopRepeater.bind(this);
@@ -35,6 +38,11 @@ class KubernetesApplicationLogsController {
this.repeater = this.$interval(this.getApplicationLogsAsync, this.state.refreshRate);
}
+ downloadLogs() {
+ const data = new this.Blob([_.reduce(this.applicationLogs, (acc, log) => acc + '\n' + log, '')]);
+ this.FileSaver.saveAs(data, this.podName + '_logs.txt');
+ }
+
async getApplicationLogsAsync() {
try {
this.applicationLogs = await this.KubernetesPodService.logs(this.application.ResourcePool, this.podName);
diff --git a/app/kubernetes/views/stacks/logs/logs.html b/app/kubernetes/views/stacks/logs/logs.html
index cab652fb9..0717a63d6 100644
--- a/app/kubernetes/views/stacks/logs/logs.html
+++ b/app/kubernetes/views/stacks/logs/logs.html
@@ -44,6 +44,13 @@
+
+
+
diff --git a/app/kubernetes/views/stacks/logs/logsController.js b/app/kubernetes/views/stacks/logs/logsController.js
index bcb7a2c1e..cadcab1db 100644
--- a/app/kubernetes/views/stacks/logs/logsController.js
+++ b/app/kubernetes/views/stacks/logs/logsController.js
@@ -6,13 +6,15 @@ const colors = ['red', 'orange', 'lime', 'green', 'darkgreen', 'cyan', 'turquois
class KubernetesStackLogsController {
/* @ngInject */
- constructor($async, $state, $interval, Notifications, KubernetesApplicationService, KubernetesPodService) {
+ constructor($async, $state, $interval, Notifications, KubernetesApplicationService, KubernetesPodService, FileSaver, Blob) {
this.$async = $async;
this.$state = $state;
this.$interval = $interval;
this.Notifications = Notifications;
this.KubernetesApplicationService = KubernetesApplicationService;
this.KubernetesPodService = KubernetesPodService;
+ this.Blob = Blob;
+ this.FileSaver = FileSaver;
this.onInit = this.onInit.bind(this);
this.stopRepeater = this.stopRepeater.bind(this);
@@ -87,6 +89,11 @@ class KubernetesStackLogsController {
}
}
+ downloadLogs() {
+ const data = new this.Blob([(this.dataLogs = _.reduce(this.stackLogs, (acc, log) => acc + '\n' + log.AppName + ' ' + log.Line, ''))]);
+ this.FileSaver.saveAs(data, this.state.transition.name + '_logs.txt');
+ }
+
async onInit() {
this.state = {
autoRefresh: false,