툴을 만들때, 트레이스 등을 확인할 때 종종 로그파일을 파싱하게 된다. 로그 파싱 예제. 헤더를 읽고 다음 헤더가 나올 때까지를 바디로 보고 읽어 오브젝트에 저장한다. 초기 버전 코드라, 계속 손은 봐야함.

LogParser.prototype.parse = function( fpath, stime, etime, session_id)
{
	var o = [];
	
	var br = java.io.BufferedReader( new java.io.FileReader( fpath)); 
	var log = {};
	log.hdr = null;
	log.body = "";
	log.linenum = null;

	var sb = new java.lang.StringBuilder();
	var line = null;
	var linenum = 0;
	while(( line = br.readLine()) != null)
	{
		linenum++;
		if( log.hdr == null) {
			var match = this.hdrRegex.exec( line);
			line = br.readLine(); linenum++;
			var hdr = this.matchHeader( match, line);
			log.hdr = hdr;
			log.linenum = linenum;

			// read raw body
			line = br.readLine(); line = br.readLine(); line = br.readLine(); line = br.readLine(); linenum = linenum+4;
			var sb = new java.lang.StringBuilder();
			while(true)
			{
				line = br.readLine();
				if( line == null) break;
				linenum++;
				var hdrMatch = this.hdrRegex.exec( line);
				if( hdrMatch != null) { 
					line = br.readLine();
					linenum++;
					log.body = sb.toString();

					if( log.hdr.session_id == session_id) {
						o.push( log); 
					}

					// initialize log
					log = {}; log.hdr = this.matchHeader( hdrMatch, line); log.body = ""; log.linenum = linenum;
					break;
				} else {
					sb.append( line).append("\n");
				}
			}

		} else {
			// just read raw body
			line = br.readLine(); line = br.readLine(); line = br.readLine(); line = br.readLine(); linenum = linenum+4;
			var sb = new java.lang.StringBuilder();
			while(true)
			{
				line = br.readLine();
				if (line ==null) break;
				linenum++;
				var hdrMatch = this.hdrRegex.exec( line);
				if( hdrMatch != null) { 
					line = br.readLine();
					linenum++;
					log.body = sb.toString();
					
					if( log.hdr.session_id == session_id) {
						o.push( log); 
					}

					// initialize log
					log = {}; log.hdr = this.matchHeader( hdrMatch, line); log.body = ""; log.linenum = linenum;
					break;
				} else {
					sb.append( line).append("\n");
				}
			}
		}
	}

	if (log.hdr != null && log.hdr.session_id == session_id) {
		o.push( log);
	} else {
	}
	return o;
}