Portál AbcLinuxu, 5. května 2025 13:18
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.