def METHOD_NAME():
	(options, logfile) = parseArguments()
	reader = csv.reader(open(logfile))
	headerRow = reader.next()
	filters = createFilters(options, headerRow)
	outputter = createOutputter(options)
	outputter.header(headerRow)
	rowsOutput = 0
	for rowdata in reader:
		if rowsOutput >= options.maxrows:
			break
		filtersSayYes = True
		for filter in filters:
			if not filter(rowdata):
				filtersSayYes = False
				break
		# Exclusive OR
		if xor(filtersSayYes, options.invert):
			rowsOutput = rowsOutput + 1
			outputter.row(rowdata)
	outputter.footer()