mirror of
https://github.com/DarkflameUniverse/NexusDashboard.git
synced 2024-11-22 05:27:25 +00:00
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.models import Account, AccountInvitation, CharacterInfo
|
||||||
from app.schemas import AccountSchema, CharacterInfoSchema
|
from app.schemas import AccountSchema, CharacterInfoSchema
|
||||||
from app.luclient import query_cdclient
|
from app.luclient import query_cdclient
|
||||||
|
from app import gm_level
|
||||||
|
|
||||||
main_blueprint = Blueprint('main', __name__)
|
main_blueprint = Blueprint('main', __name__)
|
||||||
|
|
||||||
@ -40,3 +41,37 @@ def favicon():
|
|||||||
'favicon.ico',
|
'favicon.ico',
|
||||||
mimetype='image/vnd.microsoft.icon'
|
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