2016-10-25 2 views
0

여기에 몇 가지 조언을 찾고 있습니다.Apache2에서 특정 파일 요청 횟수 로깅

AWStats 또는 이와 유사한 것을 사용하여이 작업을 수행 할 수 있음을 알고 있지만, 여기에서 내가하고 싶은 일은 과도한 것 같습니다.

수천 개의 XML 파일이 포함 된 내 웹 루트에 디렉터리가 있습니다. URL에서 GET 요청을 사용하여 단일 swf 파일에 대한 호출로로드됩니다.

예를 들면 :

https://www.example.com/myswf.swf?url=https://www.example.com/xml/1234567.xml 

URL은 동적으로 구축하고 수천이있다. 모두 동일한 swf 파일을 가리 키지 만 XML 디렉토리에서 다른 XML 파일을 가져옵니다.

내가 원하는 것은 개별 XML 파일 각각이 텍스트 파일에 몇 번이나 요청되었는지 기록하는 것입니다.

내가 타겟 디렉토리를 알고 있기 때문에 XML 디렉토리를 모니터링하고 타임 스탬프로 각 히트를 기록 할 수있는 bash 스크립트 나 다른 스크립트가 있습니까?

예 :

1234567.xml | 1475496840 
7878332.xml | 1481188213 
etc etc 

어떤 제안이?

+0

를 출력 - 포맷? – VM17

+0

동적으로 생성 된 (WordPress) 페이지에 있습니다. 그들은 실제로 swf 플레이어를 표시하는 Podcast 용 OG Meta Tags이며 Facebook에로드 된 컨텐츠 (XML)입니다. – Grant

+0

모든 요청 URL이있는 거대한 파일이 있거나이 파일에 여러 개의 파일을 추가 할 수있는 경우 간단한 'grep -c -f 색인 파일'을 사용해야합니다. 여기서'index'는 모든 .xml 파일 이름을 포함하고'file'은 모든 URL의 전체 목록입니다. – VM17

답변

0

이것은 우아한 awk 배열보다는 텍스트를 처리하기 위해 루프를 사용하기 때문에 추한 방법이지만 천천히 작동해야합니다. 최적화가 꼭 필요합니다. 나는 모든 요청 URL을 믿고있어 어디에서 모든 요청 URL을 믿고있어

는에

uniq -c requests.txt 

접근 방식 - 더 직접적인, requests.txt

#Put all the unique URLs in an index file 

awk -F/ '{print $8}' requests.txt | sort -u > index 

#Look through the file to count the number of occurrences of each item. 

while read i 
do 
    echo -n "$i | " 
    grep -c -w "$i" requests.txt 
done < index 
1

간단한라는 파일에 파일 requests.txt이라고합니다.

더 나은 이러한 요청 URL이 저장되는

awk -F/ '{print $8}' requests.txt | uniq -c 
+0

좋습니다, Varun에게 감사드립니다. – Grant