mirror of
https://github.com/tobychui/zoraxy.git
synced 2025-06-04 22:57:20 +02:00
Added log viewer filter
+ Added filter to log viewer #243 + Added auto log refresh
This commit is contained in:
parent
7626857c02
commit
94483acc92
@ -61,7 +61,7 @@ var (
|
|||||||
name = "Zoraxy"
|
name = "Zoraxy"
|
||||||
version = "3.1.0"
|
version = "3.1.0"
|
||||||
nodeUUID = "generic" //System uuid, in uuidv4 format
|
nodeUUID = "generic" //System uuid, in uuidv4 format
|
||||||
development = false //Set this to false to use embedded web fs
|
development = true //Set this to false to use embedded web fs
|
||||||
bootTime = time.Now().Unix()
|
bootTime = time.Now().Unix()
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -72,6 +72,18 @@
|
|||||||
<div class="ui divider"></div>
|
<div class="ui divider"></div>
|
||||||
<div id="logList" class="ui accordion">
|
<div id="logList" class="ui accordion">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="ui divider"></div>
|
||||||
|
<h5>Filters</h5>
|
||||||
|
<button style="margin-top: 0.4em;" filter="system" class="ui fluid basic small button filterbtn"><i class="ui blue info circle icon"></i> System</button>
|
||||||
|
<button style="margin-top: 0.4em;" filter="request" class="ui fluid basic small button filterbtn"><i class="green exchange icon"></i> Request</button>
|
||||||
|
<button style="margin-top: 0.4em;" filter="error" class="ui fluid basic small button filterbtn"><i class="red exclamation triangle icon"></i> Error</button>
|
||||||
|
<button style="margin-top: 0.4em;" filter="all" class="ui fluid basic active small button filterbtn">All</button>
|
||||||
|
<div class="ui divider"></div>
|
||||||
|
<div class="ui toggle checkbox">
|
||||||
|
<input type="checkbox" id="enableAutoScroll" onchange="handleAutoScrollTicker(event, this.checked);">
|
||||||
|
<label>Auto Refresh<br>
|
||||||
|
<small>Refresh the viewing log every 10 seconds</small></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui divider"></div>
|
<div class="ui divider"></div>
|
||||||
<small>Notes: Some log files might be huge. Make sure you have checked the log file size before opening</small>
|
<small>Notes: Some log files might be huge. Make sure you have checked the log file size before opening</small>
|
||||||
@ -89,6 +101,10 @@
|
|||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
var currentOpenedLogURL = "";
|
var currentOpenedLogURL = "";
|
||||||
|
var currentFilter = "all";
|
||||||
|
var autoscroll = false;
|
||||||
|
|
||||||
|
$(".checkbox").checkbox();
|
||||||
|
|
||||||
function openLogInNewTab(){
|
function openLogInNewTab(){
|
||||||
if (currentOpenedLogURL != ""){
|
if (currentOpenedLogURL != ""){
|
||||||
@ -105,7 +121,7 @@
|
|||||||
alert(data.error);
|
alert(data.error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$("#logrender").val(data);
|
renderLogWithCurrentFilter(data);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,5 +167,67 @@
|
|||||||
}
|
}
|
||||||
return(n.toFixed(n < 10 && l > 0 ? 1 : 0) + ' ' + units[l]);
|
return(n.toFixed(n < 10 && l > 0 ? 1 : 0) + ' ' + units[l]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Filter the log and render it to text area based on current filter choice
|
||||||
|
function renderLogWithCurrentFilter(data){
|
||||||
|
if (currentFilter == "all"){
|
||||||
|
$("#logrender").val(data);
|
||||||
|
}else{
|
||||||
|
let filterLines = data.split("\n");
|
||||||
|
let filteredLogFile = "";
|
||||||
|
for (var i = 0; i < filterLines.length; i++){
|
||||||
|
const thisLine = filterLines[i];
|
||||||
|
if (currentFilter == "system" && thisLine.indexOf("[system:") >= 0){
|
||||||
|
filteredLogFile += thisLine + "\n";
|
||||||
|
}else if (currentFilter == "request" && thisLine.indexOf("[router:") >= 0){
|
||||||
|
filteredLogFile += thisLine + "\n";
|
||||||
|
}else if (currentFilter == "error" && thisLine.indexOf(":error]") >= 0){
|
||||||
|
filteredLogFile += thisLine + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$("#logrender").val(filteredLogFile);
|
||||||
|
}
|
||||||
|
var textarea = document.getElementById('logrender');
|
||||||
|
textarea.scrollTop = textarea.scrollHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Filter related functions */
|
||||||
|
$(".filterbtn").on("click", function(evt){
|
||||||
|
//Set filter type
|
||||||
|
let filterType = $(this).attr("filter");
|
||||||
|
currentFilter = (filterType);
|
||||||
|
$(".filterbtn.active").removeClass("active");
|
||||||
|
$(this).addClass('active');
|
||||||
|
|
||||||
|
//Reload the log with filter
|
||||||
|
if (currentOpenedLogURL != ""){
|
||||||
|
$.get(currentOpenedLogURL, function(data){
|
||||||
|
if (data.error !== undefined){
|
||||||
|
alert(data.error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
renderLogWithCurrentFilter(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/* Auto scroll function */
|
||||||
|
setInterval(function(){
|
||||||
|
if (autoscroll){
|
||||||
|
//Update the log and scroll to bottom
|
||||||
|
if (currentOpenedLogURL != ""){
|
||||||
|
$.get(currentOpenedLogURL, function(data){
|
||||||
|
if (data.error !== undefined){
|
||||||
|
console.log(data.error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
renderLogWithCurrentFilter(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 10000);
|
||||||
|
function handleAutoScrollTicker(event, checked){
|
||||||
|
autoscroll = checked;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
Loading…
x
Reference in New Issue
Block a user