Add abstract log interface (ref #3)