Add log level filter
Test: Try out log filter and make sure only selected level are visible.
Change-Id: I38aeb0c4b0247c84a30565176c98ff2d43946f0f
diff --git a/tools/winscope/src/LogEntry.vue b/tools/winscope/src/LogEntry.vue
index d4367a6..bfaf90c 100644
--- a/tools/winscope/src/LogEntry.vue
+++ b/tools/winscope/src/LogEntry.vue
@@ -31,6 +31,8 @@
</template>
<script>
+import { logLevel } from './utils/consts';
+
export default {
name: 'logentry',
props: {
@@ -47,12 +49,12 @@
data() {
return {
levelIcons: {
- 'info': 'info_outline',
- 'debug': 'help_outline',
- 'verbose': 'assignment',
- 'warn': 'warning',
- 'error': 'error',
- 'wtf': 'bolt',
+ [logLevel.INFO]: 'info_outline',
+ [logLevel.DEBUG]: 'help_outline',
+ [logLevel.VERBOSE]: 'assignment',
+ [logLevel.WARN]: 'warning',
+ [logLevel.ERROR]: 'error',
+ [logLevel.WTF]: 'bolt',
}
};
},
diff --git a/tools/winscope/src/LogView.vue b/tools/winscope/src/LogView.vue
index 9c66fe6..0ac4ed6 100644
--- a/tools/winscope/src/LogView.vue
+++ b/tools/winscope/src/LogView.vue
@@ -37,6 +37,13 @@
<div class="filters">
<md-field>
+ <label>Log Levels</label>
+ <md-select v-model="selectedLogLevels" multiple>
+ <md-option v-for="level in logLevels" :value="level">{{ level }}</md-option>
+ </md-select>
+ </md-field>
+
+ <md-field>
<label>Tags</label>
<md-select v-model="selectedTags" multiple>
<md-option v-for="tag in tags" :value="tag">{{ tag }}</md-option>
@@ -76,6 +83,7 @@
</template>
<script>
import { findLastMatchingSorted } from './utils/utils.js';
+import { logLevel } from './utils/consts';
import LogEntryComponent from './LogEntry.vue';
import VirtualList from '../libs/virtualList/VirtualList';
@@ -93,18 +101,22 @@
data.forEach((entry, index) => entry.index = index);
+ const logLevels = Object.values(logLevel);
+
return {
data,
isSelected: false,
prevLastOccuredIndex: -1,
lastOccuredIndex: 0,
- selectedTags: Array.from(tags),
+ selectedTags: [],
selectedSourceFile: null,
searchInput: null,
sourceFiles: Object.freeze(Array.from(sourceFiles)),
tags: Object.freeze(Array.from(tags)),
pinnedToLatest: true,
logEntryComponent: LogEntryComponent,
+ logLevels,
+ selectedLogLevels: [],
}
},
methods: {
@@ -169,6 +181,11 @@
},
processedData() {
const filteredData = this.data.filter(line => {
+ if (this.selectedLogLevels.length > 0 &&
+ !this.selectedLogLevels.includes(line.level.toLowerCase())) {
+ return false;
+ }
+
if (this.sourceFiles.includes(this.selectedSourceFile)) {
// Only filter once source file is fully inputed
if (line.at != this.selectedSourceFile) {
@@ -176,7 +193,7 @@
}
}
- if (!this.selectedTags.includes(line.tag)) {
+ if (this.selectedTags.length > 0 && !this.selectedTags.includes(line.tag)) {
return false;
}
diff --git a/tools/winscope/src/utils/consts.js b/tools/winscope/src/utils/consts.js
index e424dc2..37f219f 100644
--- a/tools/winscope/src/utils/consts.js
+++ b/tools/winscope/src/utils/consts.js
@@ -15,4 +15,13 @@
TARGETED: 'Targeted',
};
-export { WebContentScriptMessageType, NAVIGATION_STYLE };
+const logLevel = {
+ INFO: 'info',
+ DEBUG: 'debug',
+ VERBOSE: 'verbose',
+ WARN: 'warn',
+ ERROR: 'error',
+ WTF: 'wtf',
+}
+
+export { WebContentScriptMessageType, NAVIGATION_STYLE, logLevel };