2017-04-05 13 views
0

私はApacheログファイルをトリムすることを検討しています - 現時点では約3mの行があります(イメージとビデオファイルがロードされているので、 .jpg)しかし、SQL Serverにストレートダンプを行い、これらを削除するだけでなく、重複を削除するためにさまざまなクエリを実行すると、これを100k行に取得し、そこからSQL Serverにエクスポートし、さまざまな他のソースにリンクします。私が取得しようとしてで探しています何Apacheログファイル - データをトリミングしてフィルタリングする

は下記言うです:

1.2.3.4 15/04/2016:10:20:30 [test_url]/testpage 200

1.2.3.4 15/04/2016:10:25:30 [test_url]/testproductログファイルから次の200

%時間%さt \ "%のr \" %> S

1.2。 3.4 [15/4/2016:10:20:30 +0000] GET [test_url]/t estpage HTTP/1.1 200

1.2.3.4 [15/4月/ 2016:10:20:30 +0000] [test_url]/testpage HTTP GET/1.1 200

1.2.3.4 [15/4月/ 2016年:10:20:30 +0000] GET [test_url] /testimage.jpg HTTP/1.1 200

1.2.3.4 [15/4/2016:10:25:30 +0000] [test_url]/testproduct HTTP /1.1 200

また、私は重複を削除したいので(上記の2番目の行は重複しているので削除され、3番目は.jpgなので削除されます)これと一緒に働くだろう(もしそれが本当に実現可能ならば)。

すべてのデータがSQLサーバーにダンプされても、サーバースペースを維持するためにソースでデータセットをトリミングする必要がある場合は、これを行うのが簡単です。ありがとう。

答えて

0

Apacheのaccess_logについては、ある時点でaccess_logのCustomLogディレクティブを設定しなければならなかったようです。ただ、例えば、行の最後にenv=!dontlogを追加します。

SetEnvIf Remote_Addr 10.11.12.13 dontlog 
SetEnvIf Request_URI "^/images/.*" dontlog 
SetEnvIf Request_URI "\.(mpeg|mp4|jpe?g|png|gif)" dontlog 
SetEnvIf User-Agent Robot dontlog 

などの読み取りをMYB、創造性...:あなたは特定の要求を除外したいと

CustomLog /var/log/apache2/access_log combined env=!dontlog 

そして、できるだけ多くのルールを定義しますaccording Apache docsが役に立ちます:)

+0

ありがとう、もう一つのことは、このプロセスでuri文字列の一部を削除することです[testurl] /testpage/testpage.html?promocode=testから[testurl]/testpage – user3715419

+0

URIやその他の標準的な変数を記録するために '%U 'を使用している場合はありません。しかし、環境変数を定義して、独自のログ形式を作成する代わりにログを記録することができます;)その場合、URIに基づいて 'SetEnvIf'を行いますが、その変数を特定の値に設定します。あなたのURI /クエリ文字列の削除されたバージョン。私はこれを読むことをお勧めします:https://httpd.apache.org/docs/2.4/env.htmlと上記のリンクを 'SetEnvIf'で達成する方法のアイデアを得る。 –

関連する問題