mirror of
https://github.com/moparisthebest/SickRage
synced 2024-12-12 11:02:21 -05:00
Merge pull request #1347 from fernandog/log_filter
New Feature - Log search and log filter by SR thread
This commit is contained in:
commit
e66c227631
@ -13,10 +13,51 @@
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
<!--
|
||||
\$(document).ready(function(){
|
||||
\$('#minLevel').change(function(){
|
||||
url = '$sbRoot/errorlogs/viewlog/?minLevel='+\$(this).val()
|
||||
\$(document).ready(
|
||||
|
||||
function(){
|
||||
\$('#minLevel,#logFilter,#logSearch').change(function(){
|
||||
if ( \$('#logSearch').val().length > 0 ) {
|
||||
\$('#logSearch').prop('disabled', true);
|
||||
\$('#logFilter option[value=<NONE>]').prop('selected', true);
|
||||
\$('#minLevel option[value=INFO]').prop('selected', true);
|
||||
}
|
||||
\$('#minLevel').prop('disabled', true);
|
||||
\$('#logFilter').prop('disabled', true);
|
||||
\$('#logSearch').prop('disabled', true);
|
||||
document.body.style.cursor='wait'
|
||||
url = '$sbRoot/errorlogs/viewlog/?minLevel='+\$('select[name=minLevel]').val()+'&logFilter='+\$('select[name=logFilter]').val()+'&logSearch='+\$('#logSearch').val()
|
||||
window.location.href = url
|
||||
|
||||
});
|
||||
|
||||
\$(window).load(function(){
|
||||
|
||||
if ( \$('#logSearch').val().length == 0 ) {
|
||||
\$('#minLevel').prop('disabled', false);
|
||||
\$('#logFilter').prop('disabled', false);
|
||||
\$('#logSearch').prop('disabled', false);
|
||||
} else {
|
||||
\$('#minLevel').prop('disabled', true);
|
||||
\$('#logFilter').prop('disabled', true);
|
||||
\$('#logSearch').prop('disabled', false);
|
||||
}
|
||||
|
||||
document.body.style.cursor='default';
|
||||
});
|
||||
|
||||
\$('#logSearch').keyup(function() {
|
||||
if ( \$('#logSearch').val().length == 0 ) {
|
||||
\$('#logFilter option[value=<NONE>]').prop('selected', true);
|
||||
\$('#minLevel option[value=INFO]').prop('selected', true);
|
||||
\$('#minLevel').prop('disabled', false);
|
||||
\$('#logFilter').prop('disabled', false);
|
||||
url = '$sbRoot/errorlogs/viewlog/?minLevel='+\$('select[name=minLevel]').val()+'&logFilter='+\$('select[name=logFilter]').val()+'&logSearch='+\$('#logSearch').val()
|
||||
window.location.href = url
|
||||
} else {
|
||||
\$('#minLevel').prop('disabled', true);
|
||||
\$('#logFilter').prop('disabled', true);
|
||||
}
|
||||
});
|
||||
});
|
||||
//-->
|
||||
@ -35,6 +76,14 @@ $levels.sort(lambda x,y: cmp($reverseNames[$x], $reverseNames[$y]))
|
||||
<option value="$reverseNames[$level]" #if $minLevel == $reverseNames[$level] then "selected=\"selected\"" else ""#>$level.title()</option>
|
||||
#end for
|
||||
</select>
|
||||
|
||||
Filter log by: <select name="logFilter" id="logFilter" class="form-control form-control-inline input-sm">
|
||||
#for $logNameFilter in sorted($logNameFilters)
|
||||
<option value="$logNameFilter" #if $logFilter == $logNameFilter then "selected=\"selected\"" else ""#>$logNameFilters[$logNameFilter]</option>
|
||||
#end for
|
||||
</select>
|
||||
Search log by:
|
||||
<input type="text" name="logSearch" id="logSearch" value="#if $logSearch then $logSearch else ""#" class="form-control form-control-inline input-sm" />
|
||||
</div>
|
||||
<br />
|
||||
<div class="align-left"><pre>
|
||||
@ -48,10 +97,4 @@ window.setInterval( "location.reload(true)", 600000); // Refresh every 10 minute
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
<!--
|
||||
window.setInterval( "location.reload(true)", 600000); // Refresh every 10 minutes
|
||||
//-->
|
||||
</script>
|
||||
|
||||
#include $os.path.join($sickbeard.PROG_DIR,"gui/slick/interfaces/default/inc_bottom.tmpl")
|
@ -4766,13 +4766,35 @@ class ErrorLogs(WebRoot):
|
||||
classes.ErrorViewer.clear()
|
||||
return self.redirect("/errorlogs/")
|
||||
|
||||
def viewlog(self, minLevel=logger.INFO, maxLines=500):
|
||||
def viewlog(self, minLevel=logger.INFO, logFilter="<NONE>",logSearch=None, maxLines=500):
|
||||
|
||||
t = PageTemplate(rh=self, file="viewlogs.tmpl")
|
||||
t.submenu = self.ErrorLogsMenu()
|
||||
|
||||
minLevel = int(minLevel)
|
||||
|
||||
logNameFilters = {'<NONE>': u'<No Filter>',
|
||||
'DAILYSEARCHER': u'Daily Searcher',
|
||||
'BACKLOG': u'Backlog',
|
||||
'SHOWUPDATER': u'Show Updater',
|
||||
'CHECKVERSION': u'Check Version',
|
||||
'SHOWQUEUE': u'Show Queue',
|
||||
'SEARCHQUEUE': u'Search Queue',
|
||||
'FINDPROPERS': u'Find Propers',
|
||||
'POSTPROCESSER': u'Postprocesser',
|
||||
'FINDSUBTITLES': u'Find Subtitles',
|
||||
'TRAKTCHECKER': u'Trakt Checker',
|
||||
'EVENT': u'Event',
|
||||
'ERROR': u'Error',
|
||||
'TORNADO': u'Tornado',
|
||||
'Thread': u'Thread',
|
||||
'MAIN': u'Main'
|
||||
}
|
||||
|
||||
if logFilter not in logNameFilters:
|
||||
logFilter = '<NONE>'
|
||||
|
||||
|
||||
data = []
|
||||
if os.path.isfile(logger.logFile):
|
||||
with ek.ek(open, logger.logFile) as f:
|
||||
@ -4793,11 +4815,15 @@ class ErrorLogs(WebRoot):
|
||||
|
||||
if match:
|
||||
level = match.group(7)
|
||||
logName = match.group(8)
|
||||
if level not in logger.reverseNames:
|
||||
lastLine = False
|
||||
continue
|
||||
|
||||
if logger.reverseNames[level] >= minLevel:
|
||||
if logSearch and logSearch.lower() in x.lower():
|
||||
lastLine = True
|
||||
finalData.append(x)
|
||||
elif not logSearch and logger.reverseNames[level] >= minLevel and (logFilter == '<NONE>' or logName.startswith(logFilter)):
|
||||
lastLine = True
|
||||
finalData.append(x)
|
||||
else:
|
||||
@ -4816,6 +4842,9 @@ class ErrorLogs(WebRoot):
|
||||
|
||||
t.logLines = result
|
||||
t.minLevel = minLevel
|
||||
t.logNameFilters = logNameFilters
|
||||
t.logFilter = logFilter
|
||||
t.logSearch = logSearch
|
||||
|
||||
return t.respond()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user