public function log($message = "") {
		$log = $this->getLogger();

		// Taken from Debug::caller(), amended for our purposes to filter out the intermediate call to
		// PipelineStep->log(), so that our log message shows where the log message was actually created from.
		$bt = debug_backtrace();

		$index = ($bt[1]['class'] == 'PipelineStep') ? 2 : 1;

		$caller = $bt[$index];
		$caller['line'] = $bt[($index - 1)]['line']; // Overwrite line and file to be the the line/file that actually
		$caller['file'] = $bt[($index - 1)]['file']; // called the function, not where the function is defined.
		if(!isset($caller['class'])) $caller['class'] = ''; // In case it wasn't called from a class
		if(!isset($caller['type'])) $caller['type'] = ''; // In case it doesn't have a type (wasn't called from class)

		$log->write(sprintf("[%s::%s() (line %d)] %s", $caller['class'], $caller['function'], $caller['line'], $message));
	}