2014-05-14 1 views
2

고도로 사용자 정의 된 일부 아파치 출력을 분석하기 위해 goaccess를 설정하려고합니다. 나는 .goaccessrc 파일을 작성하는 기회를 상상하지 않았기 때문에 (텍스트 편집기에서) 로그를 단순화하고 천천히 시작하기로 결정했다. 그러나, 나는이 사소한 예를 작동시킬조차 수 없다. 나는 또한 '답변 됨'으로 표시된 몇 가지 예를 시도했지만, 여전히 간결한 '아무 것도 처리 할 수 ​​없음'메시지를 받고 있습니다.사소한 goaccess 로그 구문 분석이 작동하지 않습니다.

가 여기 내 단순화 된 로그 파일에서 선이다 :

2014-05-14 06:26:18 "GET/HTTP/1.1" 200 37.157.246.146 

여기 내 .goaccessrc이다 : 나는 .goaccessrc 파일이 올바른 위치에 확신하고 읽을

date_format %Y-%m-%d %H:%M:%S 
log_format %d "%r" %s %h 

, 내가 그것을 제거하면, 나는 goaccess를 실행할 때 Log Format Configuration 윈도우를 얻게되기 때문이다. 나는 그것이 사소한 것이라고 확신하지만, 나는 그것을 볼 수 없다.

[[email protected] ~] # cat .goaccessrc 
date_format %Y-%m-%d %H:%M:%S 
log_format %d "%r" %s %h 
[[email protected] ~] # cat /var/log/apache2/simple.log 
2014-05-14 06:26:18 "GET/HTTP/1.1" 200 37.157.246.146 
[[email protected] ~] # goaccess -f /var/log/apache2/simple.log 

GoAccess - version 0.7.1 - Apr 18 2014 21:28:20 

An error has occurred 
Error occured at: goaccess.c - render_screens - 456 
Message: Nothing valid to process. 

답변

2

OK, 전체 대답 here를 참조하십시오 여기에 내 최근 터미널 세션의 최대 출력입니다. 근본적으로 이것에 달려있다. 모든 구문 분석은 log_format으로 구동되며 토큰 구분 기호는 공백 문자입니다. 위의 예에서 log_format의 첫 번째 %d 자리 표시자는 2014-05-14의 끝과 일치 한 다음 중지됩니다. 그런 다음 다음 토큰 ("%r")이 시간 부분의 시작을 찾으면 실패합니다. 위의

해결 방법은 다음과 같습니다

일 (만하지 시간) 일치
date_format %Y-%m-%d 
log_format %d %^ "%r" %s %h 

, 최종적 상태와 호스트를 한 후, 최초의 " 문자까지 모든 것을 무시 다음 요청 URL과 일치 주소.

참고가 날짜와 시간이 하나의 토큰 (NO 공백)하지 않는 한, 당신은 성공적으로 시간 부분과 일치 할 수없는 것 같다.