ホームページ  >  記事  >  バックエンド開発  >  Python は Nginx のアクセス ログを分析し、MySQL データベース インスタンスに保存します

Python は Nginx のアクセス ログを分析し、MySQL データベース インスタンスに保存します

WBOY
WBOYオリジナル
2016-06-16 08:44:551241ブラウズ

Python を使用して Nginx アクセス ログを分析し、Nginx ログ形式に従って分割し、MySQL データベースに保存します。
1. Nginx アクセス ログの形式は次のとおりです:

コードをコピーします コードは次のとおりです:

$ Remote_addr - $remote_user [$ time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"' #nginx のデフォルトのログ形式が使用されます
2. Nginx の内容アクセスログは次のとおりです:
コードをコピー コードは次のとおりです:

182.19.31.129 - - [2013-08] -13T00:00:01-07:00] "GET / css/anniversary.css HTTP/1.1" 304 0 "http://www.chlinux.net/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/ 537.36 (KHTML、Gecko など) Chrome/28.0.1500.95 Safari/ 537.36" "-"
3. 以下は、Python で nginx ログを分析するための Python コードです:
コードをコピーします コードは次のとおりです:
#!/usr/bin/env python
#coding:utf8
import os
import fileinput
import re
import sys
import MySQLdb
# ログの場所
logfile=open("access_20130812.log")
# nginx のデフォルトのログ形式が使用されます $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" " $http_x_forwarded_for "'
#ログ分析正規表現
#203.208.60.230
ipP = r"?P[d.]*"
#[] を除く、[] で始まる任意の文字角かっこで囲まれていない前後の [] 項目との一致 (非貪欲一致* も使用できます)。 改行を除く任意の文字と一致します* このような繰り返しは「貪欲」であり、式エンジンはできるだけ多くの繰り返しを試みます。できるだけ何度でも。#以]结束
#[21/Jan/2011:15:04:41 +0800]
timeP = r"""?P
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。