abstractify logging (so apps can handle logging as appropriate)