add log function