abstract out log interface