On Linux, the following cd works fine so cds into tmp:

 / # cd /tmp
 tmp # 

But this does not work (stays at root, nothing appears in /var/log/messages). Why not? 

 / # cd /tmp 2>&1 | /usr/bin/logger -t Test
 / #

I tried with stripping off this stderr redirect but that also did not work.

My goal is to redirect all output of my script to syslog, so also if I try to CD in a directory which does not exist/permission denied/etc. Why is it not working and how to get this working?

A normal echo does print to syslog so that does work:

 echo Test | /usr/bin/logger -t Test