add impl of log