Lebih
Mengurai file log apache
Saya baru saja mulai belajar Python dan ingin membaca file log Apache dan menempatkan bagian-bagian dari setiap baris ke dalam daftar yang berbeda.
baris dari file tersebut
172.16.0.3 - - [25/Sep/2002:14:04:19 +0200] "GET / HTTP/1.1" 401 - "" "Mozilla/5.0 (X11;U;Linux i686;en-US;rv:1.1) Gecko/20020827"
menurut situs web Apache formatnya adalah
%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\
Saya dapat membuka file dan membacanya apa adanya, tetapi saya tidak tahu cara membuatnya terbaca dalam format tersebut sehingga saya dapat memasukkan setiap bagian ke dalam daftar.
33
3
Ini adalah pekerjaan untuk ekspresi reguler.
Sebagai contoh:
Keluarannya adalah sebuah tuple dengan 6 buah informasi dari baris tersebut (khususnya, kelompok-kelompok di dalam tanda kurung pada pola tersebut):
Gunakan ekspresi reguler untuk membagi baris menjadi "token" yang terpisah:
Solusi lain adalah dengan menggunakan alat khusus, misalnya http://pypi.python.org/pypi/pylogsparser/0.4
Saya telah membuat sebuah pustaka python yang melakukan hal tersebut: apache-log-parser.