use error logger instead of io:format