supports async logging model