simple web log viewing for admins
This commit is contained in:
parent
d3c8c5d77b
commit
121c407cdb
35
app/main.py
35
app/main.py
@ -6,6 +6,7 @@ from wand import image
|
||||
from app.models import Account, AccountInvitation, CharacterInfo
|
||||
from app.schemas import AccountSchema, CharacterInfoSchema
|
||||
from app.luclient import query_cdclient
|
||||
from app import gm_level
|
||||
|
||||
main_blueprint = Blueprint('main', __name__)
|
||||
|
||||
@ -40,3 +41,37 @@ def favicon():
|
||||
'favicon.ico',
|
||||
mimetype='image/vnd.microsoft.icon'
|
||||
)
|
||||
|
||||
@main_blueprint.route('/logs')
|
||||
@gm_level(9)
|
||||
def logs():
|
||||
with open('nexus_dashboard.log', 'r') as file:
|
||||
logs = tail(file, 100)
|
||||
return render_template('main/logs.html.j2', logs=logs)
|
||||
|
||||
def tail( f, lines=20 ):
|
||||
total_lines_wanted = lines
|
||||
|
||||
BLOCK_SIZE = 1024
|
||||
f.seek(0, 2)
|
||||
block_end_byte = f.tell()
|
||||
lines_to_go = total_lines_wanted
|
||||
block_number = -1
|
||||
blocks = [] # blocks of size BLOCK_SIZE, in reverse order starting
|
||||
# from the end of the file
|
||||
while lines_to_go > 0 and block_end_byte > 0:
|
||||
if (block_end_byte - BLOCK_SIZE > 0):
|
||||
# read the last block we haven't yet read
|
||||
f.seek(block_number*BLOCK_SIZE, 2)
|
||||
blocks.append(f.read(BLOCK_SIZE))
|
||||
else:
|
||||
# file too small, start from begining
|
||||
f.seek(0,0)
|
||||
# only read what was not read
|
||||
blocks.append(f.read(block_end_byte))
|
||||
lines_found = blocks[-1].count('\n')
|
||||
lines_to_go -= lines_found
|
||||
block_end_byte -= BLOCK_SIZE
|
||||
block_number -= 1
|
||||
all_read_text = ''.join(reversed(blocks))
|
||||
return '</br>'.join(all_read_text.splitlines()[-total_lines_wanted:])
|
||||
|
13
app/templates/main/logs.html.j2
Normal file
13
app/templates/main/logs.html.j2
Normal file
@ -0,0 +1,13 @@
|
||||
{% extends 'base.html.j2' %}
|
||||
|
||||
{% block title %}LOGS{% endblock %}
|
||||
|
||||
{% block content_before %}
|
||||
LOGS - {{ config.APP_NAME }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content_override %}
|
||||
<code>
|
||||
{{ logs }}
|
||||
</code>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user