diff --git a/ui-modules/app-inspector/app/components/stream/stream.directive.js b/ui-modules/app-inspector/app/components/stream/stream.directive.js
index 8db9b86..2196885 100644
--- a/ui-modules/app-inspector/app/components/stream/stream.directive.js
+++ b/ui-modules/app-inspector/app/components/stream/stream.directive.js
@@ -43,19 +43,56 @@
         $scope.autoUpdate = $scope.autoUpdate !== false;
         $scope.tail = $scope.tail !== false;
 
-        let pre = $element.find('pre');
+        // Content filtering features
+        $scope.filteredStream = [];
+        $scope.streamProcessedUpTo = 0;
+        $scope.otherLogLines = 0;
+        $scope.errorLogLines = 0;
+        $scope.debugLogLines = 0;
+        $scope.traceLogLines = 0;
+        $scope.warningLogLines = 0;
+        $scope.isDisplayOther = $scope.isDisplayOther !== false;
+        $scope.isDisplayError = $scope.isDisplayError !== false;
+        $scope.isDisplayDebug = $scope.isDisplayDebug !== false;
+        $scope.isDisplayTrace = $scope.isDisplayTrace !== false;
+        $scope.isDisplayWarning = $scope.isDisplayWarning !== false;
+        $scope.isFilterContent = isFilterContent;
+        $scope.isDisplayFormattedItem = isDisplayFormattedItem;
+        $scope.getFormattedItemLogLevel = getFormattedItemLogLevel;
+
+        // CLI XML features
+        $scope.cliXml = false;
+        $scope.cliXmlIdentified = false;
+        $scope.toggleCliXml = toggleCliXml;
+        $scope.isCliXmlSupported = isCliXmlSupported;
+        $scope.cliXmlVerificationRequired = isWinRmStream(); // CLI XML verification is required only when stream is WinRM
+
+        let autoScrollableElement = Array.from($element.find('pre')).filter(item => item.classList.contains('auto-scrollable'));
         let refreshFunction;
 
-        pre.on('mousewheel', () => {
-            $scope.$apply(() => {
-                $scope.tail = pre[0].scrollTop + pre[0].offsetHeight >= pre[0].scrollHeight;
-            });
+        // Set up cancellation of auto-scrolling on scrolling up.
+        autoScrollableElement.forEach(item => {
+            if (item.addEventListener)
+            {
+                let wheelHandler = () => {
+                    $scope.$apply(() => {
+                        $scope.tail = (item.scrollTop + item.offsetHeight) >= item.scrollHeight;
+                    });
+                }
+                // IE9, Chrome, Safari, Opera
+                item.addEventListener("mousewheel", wheelHandler, false);
+                // Firefox
+                item.addEventListener("DOMMouseScroll", wheelHandler, false);
+            }
         });
 
+        // Watch the 'tail' and auto-scroll down if auto-scroll is enabled.
         $scope.$watch('tail', () => {
-            $scope.$applyAsync(() => {
-                pre[0].scrollTop = pre[0].scrollHeight;
-            });
+            if ($scope.tail) {
+                $scope.$applyAsync(() => {
+                    autoScrollableElement.forEach(item => item.scrollTop = item.scrollHeight);
+                });
+            }
         });
 
         $scope.$watch('autoUpdate', ()=> {
@@ -67,9 +104,28 @@
         });
         $scope.$on('$destroy', cancelUpdate);
 
+        /**
+         * Updates the stream data.
+         */
         function updateStream() {
             activityApi.activityStream($scope.activityId, $scope.streamType).then((response)=> {
+
+                // 1. Try to identify CLI XML output.
+                const CLI_XML_HEADER_SIZE = 100; // estimated headers size in WinRM that can contain indication of CLI XML output
+                if ($scope.cliXmlVerificationRequired && typeof response.data === 'string' && response.data.length >= CLI_XML_HEADER_SIZE) {
+                    let header = response.data.slice(0, CLI_XML_HEADER_SIZE);
+                    if (header.includes('#< CLIXML') || header.includes('xmlns="http://schemas.microsoft.com/powershell')) {
+                        $scope.cliXmlIdentified = true;
+                    }
+                    $scope.cliXmlVerificationRequired = false; // perform verification once, if conditions match
+                }
+
+                // 2. Update the stream data holder in this directive.
                 $scope.stream = response.data;
+
+                // 3. Filter the content where relevant and display it.
+                updateFilteredContent();
+
             }).catch((error)=> {
                 if (error.data) {
                     $scope.error = error.data.message;
@@ -77,18 +133,146 @@
             }).finally(() => {
                 if ($scope.tail) {
                     $scope.$applyAsync(() => {
-                        pre[0].scrollTop = pre[0].scrollHeight;
+                        autoScrollableElement.forEach(item => item.scrollTop = item.scrollHeight);
                     });
                 }
             })
         }
 
+        /**
+         * Cancels the auto-update of the streamed content.
+         */
         function cancelUpdate() {
             if (refreshFunction) {
                 $interval.cancel(refreshFunction);
             }
         }
 
+        /**
+         * @returns {boolean} True if CLI XML is supported, and false otherwise. CLI XML is expected in WinRM stream only.
+         */
+        function isCliXmlSupported() {
+            return isWinRmStream() && $scope.cliXmlIdentified === true;
+        }
+
+        /**
+         * @returns {boolean} True if stream type is WinRM, and false otherwise.
+         */
+        function isWinRmStream() {
+            return $scope.streamType === 'winrm';
+        }
+
+        /**
+         * Switches content format to CLI XML and back.
+         */
+        function toggleCliXml() {
+            $scope.cliXml = !$scope.cliXml;
+            updateFilteredContent();
+        }
+
+        /**
+         * @returns {boolean} True if logging filter should be displayed, and false otherwise.
+         */
+        function isFilterContent() {
+            return isCliXmlSupported() && $scope.cliXml !== true;
+        }
+
+        /**
+         * @returns {string} Returns class name of the formatted item log level.
+         */
+        function getFormattedItemLogLevel(formattedItem) {
+            if (formattedItem.isWarning) {
+                return 'log-warning';
+            } else  if (formattedItem.isError) {
+                return 'log-error';
+            } if (formattedItem.isDebug) {
+                return 'log-debug';
+            }
+            return 'log-trace';
+        }
+
+        /**
+         * @returns {boolean} True if formatted item should be displayed, and false otherwise.
+         */
+        function isDisplayFormattedItem(formattedItem) {
+            return formattedItem.isWarning && $scope.isDisplayWarning
+                || formattedItem.isDebug && $scope.isDisplayDebug
+                || formattedItem.isError && $scope.isDisplayError
+                || formattedItem.isTrace && $scope.isDisplayTrace
+                || formattedItem.isOther && $scope.isDisplayOther;
+        }
+
+        /**
+         * Formats CLI XML output and displays it in 'filtered-stream-content' field.
+         */
+        function formatCliXmlContent() {
+
+            // Slice at index of last closing tag ending wth the new line
+            let streamTags = $scope.stream.match(/<\/(.*?)>\n/g);
+            let lastClosingTagIndex  = $scope.stream.lastIndexOf(streamTags[streamTags.length-1]);
+            let newCliXmlData = $scope.stream.slice($scope.streamProcessedUpTo, lastClosingTagIndex);
+            if (!newCliXmlData) {
+                return;
+            }
+
+            $scope.streamProcessedUpTo += newCliXmlData.length;
+
+            newCliXmlData.split(/\n/g).forEach(item => {
+                let formattedItem = {
+                    id: ($scope.filteredStream.length), // ng-repeat requires unique items, array length fits the bill
+                    text: item,
+                    isOther: false,
+                    isError: false,
+                    isDebug: false,
+                    isTrace: false,
+                    isWarning: false
+                };
+
+                if (/<s s="warning">/i.test(item)) {
+                    $scope.warningLogLines++;
+                    formattedItem.isWarning = true;
+                } else if (/<s s="debug">/i.test(item)) {
+                    $scope.debugLogLines++;
+                    formattedItem.isDebug = true;
+                } else if (/<s s="verbose">/i.test(item)) {
+                    $scope.traceLogLines++;
+                    formattedItem.isTrace = true;
+                } else if (/<s s="error">/i.test(item)) {
+                    $scope.errorLogLines++;
+                    formattedItem.isError = true;
+                } else {
+                    $scope.otherLogLines++;
+                    formattedItem.isOther = true;
+                }
+
+                // Remove CLI XML string tags for know log levels
+                if (!formattedItem.isOther) {
+                    formattedItem.text = item.replace(/<s s="(.*?)">|\t/gi, '');
+                }
+
+                // Remove CLI XML markers, newlines and replace tabs with spaces
+                formattedItem.text = formattedItem.text.replace(/<\/s>|_x000[a-z0-9]_|\n/gi, '').replace(/\t/g,' ');
+
+                // Push update item and let ng-repeat update the content
+                $scope.filteredStream.push(formattedItem);
+            });
+        }
+
+        /**
+         * Filters stream content as per selected filters if filtering is enabled, e.g. display/hide warnings or errors.
+         */
+        function updateFilteredContent() {
+
+            if (!isFilterContent()) {
+                return;
+            }
+
+            // Format new CLI XML content
+            if (isCliXmlSupported()) {
+                formatCliXmlContent();
+            }
+        }
+
         updateStream();
     }
 }
diff --git a/ui-modules/app-inspector/app/components/stream/stream.less b/ui-modules/app-inspector/app/components/stream/stream.less
index 8f43f73..f505b92 100644
--- a/ui-modules/app-inspector/app/components/stream/stream.less
+++ b/ui-modules/app-inspector/app/components/stream/stream.less
@@ -19,22 +19,42 @@
 stream {
   display: block;
   position: relative;
+  @warning-log-color: @brand-warning;
+  @error-log-color: @brand-danger;
+  @debug-log-color: @brand-info;
+  @trace-log-color: @gray-lighter;
 
   pre {
     min-height: 4em;
     background: @gray;
     color:  @gray-lighter;
     .monospace();
-    padding: 0.8em;
-    padding-bottom: 1.2em;
+    padding: 0.8em 0.8em 1.2em;
+
+    .log-section {
+      all: revert;
+      margin: 0;
+      .monospace();
+      &.log-warning {
+        color: @warning-log-color;
+      }
+      &.log-error {
+        color: @error-log-color;
+      }
+      &.log-debug {
+        color: @debug-log-color;
+      }
+      &.log-trace {
+        color: @trace-log-color;
+      }
+    }
   }
 
   .log-actions {
     position: absolute;
     top: 0;
     right: 0;
-    padding: 1em;
-    padding-top: 0.75em;
+    padding: 0.75em 1em 1em;
   }
 
   .log-action {
@@ -49,25 +69,50 @@
     &:hover .fa  {
       color: lighten(desaturate(@base-color, 40%), 10%);
     }
-    &.active .fa {
-      color: @base-color
+    &.active {
+      .fa {
+        color: @base-color;
+      }
+      .fa-exclamation-triangle {
+        color: @error-log-color;
+      }
+      .fa-bolt {
+        color: @warning-log-color;
+      }
+      .fa-bug {
+        color: @debug-log-color;
+      }
+      .fa-bullhorn {
+        color: @trace-log-color;
+      }
+      .fa-question {
+        color: @trace-log-color;
+      }
     }
-    &.active:hover .fa {
-      color: desaturate(@base-color, 20%);
+    &.active:hover {
+      .fa {
+        color: desaturate(@base-color, 20%);
+      }
+      .fa-exclamation-triangle {
+        color: desaturate(@error-log-color, 20%);
+      }
+      .fa-bolt {
+        color: desaturate(@warning-log-color, 20%);
+      }
+      .fa-bug {
+        color: desaturate(@debug-log-color, 20%);
+      }
+      .fa-bullhorn {
+        color: desaturate(@trace-log-color, 20%);
+      }
+      .fa-question {
+        color: desaturate(@trace-log-color, 20%);
+      }
     }
   }
   
   .fa-arrow-circle-o-down {
     margin-top: 1px;
   }
-
-  .log-autoupdate {
-    .fa {
-      transform: rotate(0);
-    }
-    &.active .fa {
-      transform: rotate(180deg) translate(0,1px);
-    }
-  }
 }
 
diff --git a/ui-modules/app-inspector/app/components/stream/stream.template.html b/ui-modules/app-inspector/app/components/stream/stream.template.html
index 0b2e1e1..0322874 100644
--- a/ui-modules/app-inspector/app/components/stream/stream.template.html
+++ b/ui-modules/app-inspector/app/components/stream/stream.template.html
@@ -19,14 +19,38 @@
 <loading-state error="error" ng-if="stream === undefined"></loading-state>
 
 <div ng-show="stream.length >= 0">
-  <pre ng-show="stream.length > 0">{{stream}}</pre>
+  <pre ng-show="stream.length > 0 && !isFilterContent()" class="auto-scrollable">{{stream}}</pre>
+  <pre ng-show="stream.length > 0 && isFilterContent()" class="auto-scrollable"><pre ng-repeat="item in filteredStream track by item.id" ng-show="isDisplayFormattedItem(item)" class="log-section" ng-class="getFormattedItemLogLevel(item)">{{item.text}}</pre><p ng-show="!isDisplayTrace && !isDisplayDebug && !isDisplayWarning && !isDisplayError && !isDisplayOther" class="text-center"><i>(select filter)</i></p></pre>
   <pre ng-show="stream.length == 0" class="text-center"><i>(no content)</i></pre>
-
   <div class="log-actions">
-    <span class="log-autoupdate log-action" ng-click="autoUpdate = !autoUpdate" ng-class="{'active': autoUpdate}" 
-            uib-tooltip="{{ autoUpdate ? 'Disable' : 'Enable' }} auto-update" tooltip-placement="top" tooltip-popup-delay="500" tooltip-append-to-body="true">
-        <i class="fa fa-refresh"></i></span>
-    <span class="log-tail log-action" ng-click="tail = !tail" ng-class="{'active': tail}" 
+
+    <!-- Content filtering -->
+    <span class="log-action" ng-click="isDisplayOther = !isDisplayOther" ng-class="{'active': isDisplayOther}" ng-show="isFilterContent()"
+          uib-tooltip="{{ isDisplayOther ? 'Hide' : 'Show' }} other ({{otherLogLines}} lines)" tooltip-placement="top" tooltip-popup-delay="500" tooltip-append-to-body="true">
+        <i class="fa fa-question"></i></span>
+    <span class="log-action" ng-click="isDisplayTrace = !isDisplayTrace" ng-class="{'active': isDisplayTrace}" ng-show="isFilterContent()"
+          uib-tooltip="{{ isDisplayTrace ? 'Hide' : 'Show' }} trace ({{traceLogLines}} lines)" tooltip-placement="top" tooltip-popup-delay="500" tooltip-append-to-body="true">
+        <i class="fa fa-bullhorn"></i></span>
+    <span class="log-action" ng-click="isDisplayDebug = !isDisplayDebug" ng-class="{'active': isDisplayDebug}" ng-show="isFilterContent()"
+          uib-tooltip="{{ isDisplayDebug ? 'Hide' : 'Show' }} debug ({{debugLogLines}} lines)" tooltip-placement="top" tooltip-popup-delay="500" tooltip-append-to-body="true">
+        <i class="fa fa-bug"></i></span>
+    <span class="log-action" ng-click="isDisplayWarning = !isDisplayWarning" ng-class="{'active': isDisplayWarning}" ng-show="isFilterContent()"
+          uib-tooltip="{{ isDisplayWarning ? 'Hide' : 'Show' }} warnings ({{warningLogLines}} lines)" tooltip-placement="top" tooltip-popup-delay="500" tooltip-append-to-body="true">
+        <i class="fa fa-bolt"></i></span>
+    <span class="log-action" ng-click="isDisplayError = !isDisplayError" ng-class="{'active': isDisplayError}" ng-show="isFilterContent()"
+          uib-tooltip="{{ isDisplayError ? 'Hide' : 'Show' }} errors ({{errorLogLines}} lines)" tooltip-placement="top" tooltip-popup-delay="500" tooltip-append-to-body="true">
+        <i class="fa fa-exclamation-triangle"></i></span>
+
+    <!-- CLI XML output mode -->
+    <span class="log-action" ng-click="toggleCliXml()" ng-class="{'active': cliXml}" ng-show="isCliXmlSupported()"
+          uib-tooltip="Display {{ cliXml ? 'formatted output' : 'CLI XML' }}" tooltip-placement="top" tooltip-popup-delay="500" tooltip-append-to-body="true">
+        <i class="fa fa-code"></i></span>
+
+    <!-- Auto-update and auto-scroll -->
+    <span class="log-action" ng-click="autoUpdate = !autoUpdate" ng-class="{'active': autoUpdate}"
+          uib-tooltip="{{ autoUpdate ? 'Disable' : 'Enable' }} auto-update" tooltip-placement="top" tooltip-popup-delay="500" tooltip-append-to-body="true">
+        <i class="fa fa-refresh" ng-class="autoUpdate ? 'fa-spin' : ''"></i></span>
+    <span class="log-tail log-action" ng-click="tail = !tail" ng-class="{'active': tail}"
             uib-tooltip="{{ tail ? 'Disable' : 'Enable' }} auto-scroll" tooltip-placement="top" tooltip-popup-delay="500" tooltip-append-to-body="true">
         <i class="fa fa-arrow-circle-o-down "></i></span>
   </div>
diff --git a/ui-modules/app-inspector/app/views/main/inspect/activities/detail/detail.controller.js b/ui-modules/app-inspector/app/views/main/inspect/activities/detail/detail.controller.js
index f089495..f8f7e2b 100644
--- a/ui-modules/app-inspector/app/views/main/inspect/activities/detail/detail.controller.js
+++ b/ui-modules/app-inspector/app/views/main/inspect/activities/detail/detail.controller.js
@@ -116,6 +116,14 @@
                 otherMap[name] = s;
             }
         }
+
+        // Do not display streams that are not initialized
+        for (let name in knownMap) {
+            if (knownMap[name] === null || knownMap[name] === undefined) {
+                delete knownMap[name];
+            }
+        }
+
         $scope.streamsById = Object.assign({}, knownMap, otherMap);
         return Object.keys($scope.streamsById);
     };
