Lal 368 - Added abstraction for the logger

I think it's okay to name the method sync or async but having both in the same class would mean that we would have to test the cases where both are used simultaneously. Meaning that what if an async called is made and right away a sync called is made. We would have to make sure that this case is covered.

To simplify things why not have a Sync class and an Async class? @wsourdeau thoughts?