Skip to content

Commit fdd4028

Browse files
add a limit filter for log view see #224
1 parent 0cd1e42 commit fdd4028

File tree

3 files changed

+30
-16
lines changed

3 files changed

+30
-16
lines changed

app/class/Controlleradmin.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,38 +112,42 @@ public function log(): void
112112
'warn' => $_GET['warn'] ?? true,
113113
'error' => $_GET['error'] ?? true,
114114
'info' => $_GET['info'] ?? true,
115+
'limit' => $_GET['limit'] ?? 100,
115116
];
116117

117118
$loglines = file(Model::ERROR_LOG);
119+
$filelines = count($loglines);
118120

119121
$stats = stat(Model::ERROR_LOG);
120122
if ($stats === false) {
121123
throw new LogicException();
122124
}
123125

124-
125126
$logs = [];
126-
$i = 1;
127127
$t = 0;
128-
foreach ($loglines as $line) {
128+
$max = max(0, $filelines - $filters['limit']);
129+
for ($l = $filelines - 1; $l >= 0; $l--) {
130+
if ($t >= $filters['limit']) {
131+
break;
132+
}
133+
$line = $loglines[$l];
129134
if (!str_starts_with($line, '#')) {
130135
try {
131136
$log = new Logline($line);
132-
$t++;
133137
if ($filters[$log->level]) {
134-
$logs[$i] = $log;
138+
$logs[$l + 1] = $log;
139+
$t++;
135140
}
136141
} catch (RuntimeException $e) {
137142
// Skip the line if parsing failed
138143
}
139144
}
140-
$i++;
141145
}
142146
$this->showtemplate('adminlog', array_merge([
143-
'logs' => $logs,
147+
'logs' => array_reverse($logs, true),
144148
'total' => $t,
145149
'filesize' => $stats['size'] / 8,
146-
'filelines' => count($loglines),
150+
'filelines' => $filelines,
147151
], $filters));
148152
}
149153
}

app/view/templates/adminlog.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,21 @@
1212
</span>
1313
</h2>
1414
<div id="options">
15-
<form class="level" action="<?= $this->url('adminlog') ?>#bottom" method="get">
15+
<form action="<?= $this->url('adminlog') ?>#bottom" method="get">
1616
<input type="hidden" name="warn" value="0">
1717
<input type="checkbox" name="warn" id="warn" value="1" <?= $warn ? 'checked' : '' ?>>
18-
<label for="warn" class="warn">warn</label>
18+
<label for="warn" class="level warn">warn</label>
1919

2020
<input type="hidden" name="error" value="0">
2121
<input type="checkbox" name="error" id="error" value="1" <?= $error ? 'checked' : '' ?>>
22-
<label for="error" class="error">error</label>
22+
<label for="error" class="level error">error</label>
2323

2424
<input type="hidden" name="info" value="0">
2525
<input type="checkbox" name="info" id="info" value="1" <?= $info ? 'checked' : '' ?>>
26-
<label for="info" class="info">info</label>
26+
<label for="info" class="level info">info</label>
27+
28+
<input type="number" name="limit" id="limit" value="<?= $limit ?>" min="0">
29+
<label for="limit">last lines</label>
2730

2831
<input type="submit" value="filter">
2932
</form>
@@ -73,7 +76,7 @@
7376
</section>
7477
</main>
7578
<footer>
76-
w_error.log | displayed lines: <?= $total ?> | file lines: <?= $filelines ?> | file size: <?= $this->readablesize($filesize) ?>o
79+
w_error.log | parsed lines: <?= $total ?> | file lines: <?= $filelines ?> | file size: <?= $this->readablesize($filesize) ?>o
7780
</footer>
7881

7982
<?php $this->stop('page') ?>

assets/css/adminlog.css

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
border-radius: var(--radius);
77
}
88

9-
.level .warn {
9+
.level .warn, .level.warn {
1010
background-color: rgb(221, 144, 0);
1111
}
1212

13-
.level .error {
13+
.level .error, .level.error {
1414
background-color: red;
1515

1616
}
1717

18-
.level .info {
18+
.level .info, .level.info {
1919
background-color: green;
2020

2121
}
@@ -45,5 +45,12 @@ tbody {
4545
border-radius: var(--radius);
4646
padding: var(--half-padding) var(--padding);
4747
font-size: var(--size-small);
48+
}
49+
50+
#options #limit {
51+
width: 80px;
52+
}
53+
54+
label.level {
4855
color: white;
4956
}

0 commit comments

Comments
 (0)