implement log generator