これを行うコードをいくつか書きました。syslog の代わりに ASL を使用しており、kevents を使用しているため、システムの別の API に移植する必要がある場合があります (ASL の代わりに syslog を使用し、kevent の代わりに poll/select を使用します)。
http://cgit.freedesktop.org/xorg/app/xinit/tree/launchd/console_redirect.c
さらに、基本的にこれを Mountain Lion の libsystem_asl に追加しました。asl_log_descriptor のマニュアル ページを確認してください。
例:
#include <asl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
asl_log_descriptor(NULL, NULL, ASL_LEVEL_INFO, STDOUT_FILENO, ASL_LOG_DESCRIPTOR_WRITE);
asl_log_descriptor(NULL, NULL, ASL_LEVEL_NOTICE, STDERR_FILENO, ASL_LOG_DESCRIPTOR_WRITE);
fprintf(stdout, "This is written to stdout which will be at log level info.");
fprintf(stderr, "This is written to stderr which will be at log level notice.");
return 0;
}