로그 파서를 사용하여 IIS 로그를 구문 분석하는 배치 스크립트를 작성하고 있습니다. 그럼 여기에 2 개의 질문이 있습니다.로그 파서 : WHERE 절의 입력으로 텍스트 파일 사용
Q1. 내가 원한 것은 사용자 이름이 텍스트 파일로 쓰여진 항목을 보지 않는 것입니다. 따라서 코드 구문에 대한 걱정없이 해당 텍스트 파일을 업데이트 할 수 있습니다.
즉, 다시 'AND'를 사용하여 'WHERE'절에 모든 사용자 이름 (약 30-50 일 수 있음)을 넣는 대신 다시 & 사용자 이름 목록이있는 텍스트 파일을 갖게됩니다.
코드 예제 : 나는 제 1 서브 쿼리를 통해이 작업을 수행하려고했지만,이 로그 분석기에서 지원되지 않습니다
"LogParser.exe" -i:csv "SELECT DISTINCT date, cs-username, clientun, cs-uri-stem FROM D:\temp.csv WHERE NOT cs-username IN ('NULL';'abc';'def';'hij';'and_so_on')" >D:\final_output.txt -o:NAT -rtp:-1
것 같습니다. 나는 해결책으로 OPENROWSET을 발견했으나 그것은 나를 위해 일하는 것 같지 않거나 그것이 작동하도록 만드는 방법을 모르겠다. 다른 해결책은 SQL 용이었고 로그 파서에서 작동하지 않았습니다.
2. 언급 된 날짜 사이에 로그를 읽길 원합니다. 그래서, 시작 및 YYYY-MM-DD 형식으로 사용자의 종료 날짜를 복용하고
"LogParser.exe" -i:iisw3c "SELECT DISTINCT cs-username, REVERSEDNS(C-IP), date, cs-uri-stem, FROM \logs\location\* WHERE date BETWEEN %date_1% AND %Date_2%" >D:\temp.csv -o:csv
오류 쿼리에 이르렀 내가 여기에 도착하고 있습니다 :
Error: WHERE clause: Semantic Error: left interval of BETWEEN operator ("'2016-02-15'") has a different type than operand ("date")
에서, 유의하시기 바랍니다 Q2에서 생성 된 출력 파일은 Q1의 입력으로 사용됩니다.
확인. 그래서, 'findstr'을 사용하면. '/ v'매개 변수에 파일을 넣을 수 있습니까? Like 'findstr/v excluded.txt' 마찬가지로 파일에는 제외 할 사용자 이름이 있습니다. –
@MoktikDhawan,'/ v'가 제공된 문자열/패턴과 일치하지 않는 라인을 묻는 경우'/ g : file.txt' 스위치를 사용하여 일치시킬 문자열/패턴의 소스를 나타냅니다. 이 둘의 조합은 파일의 문자열/패턴과 일치하지 않는 행을 검색합니다. –
지금 알기. 나는/g : 파일을 매개 변수로 보지 못했습니다. 나는 그것의 다른 기능을 생각했다. 내 잘못이야. 나는 이것을 한 번 시험 할 것이고 갱신 할 것이다! 고마워. –