Portál AbcLinuxu, 3. listopadu 2025 21:51
194.xxx.17x.yyy - - [13/Sep/2019:09:51:27 +0200] "GET /nejaky-obsah-bla-bla-bla/ HTTP/2.0" 301 275 "https://www.domena.cz/nejaky-obsah-bla-bla-bla" "Mozilla/5.0 (Linux; Android 6.0.1; Redmi 3S Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.132 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/238.0.0.41.116;]"

Vždycky si můžeš napsat script v nějakým jazyce. Např. v Perlu 6
use v6.c;
constant %months = %(<Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec> Z=> 1..12);
sub tag-by-DateTime ($log-line) {
$log-line
andthen .match: rx{
'[' $<day>= \d **2
'/' $<month-string>= \w **3
'/' $<year>= \d **4
':' $<hour>= \d **2
':' $<minute>= \d **2
':' $<sec>= \d **2
' '<[+-]> \d ** 4
']'
}
andthen %(.hash, "month" => %months{$<month-string>})
andthen DateTime.new: |$_
}
sub MAIN (
:$file = '/var/log/httpd/access_log',
:$from = DateTime.now.earlier(:1day).Str,
:$to = DateTime.now.Str,
) {
my @log = lines $file.IO;
@log
andthen .map: {tag-by-DateTime($_) => $_}\
andthen .grep: {.key ~~ DateTime.new($from) .. DateTime.new($to)}\
andthen .map: *.value.put
}
a pak
perl6 ./read-log-by-date-abc.p6 -file=/var/log/httpd/access_log -from=2016-08-21T12:50:00 -to=2016-08-21T13:37:00
Pár poznámek:
:$to = DateTime.now.Str, je hodně neelegantní atp.journalctl --since= --until= ...To logování do databáze taky nemusí být špatný nápad, jsou i specializované řešení pro tento účel.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.