add log functions