Est-il possible de redirect les messages syslog vers stdout?

J’ai une application qui peut fonctionner dans deux modes, soit avec une CLI, soit en tant que démon.

J’utilise syslog() pour la journalisation. Cependant, lorsque j’exécute en mode CLI, tous les messages, à l’exception de ceux marqués LOG_DEBUG , doivent être envoyés à la console au lieu d’être consignés.

J’ai essayé d’utiliser setlogmask() , mais cela ne semble pas être redirigé vers la console.

Quelle est la meilleure façon de procéder?

Comme suggéré dans les commentaires de Maverik, j’ai écrit un wrapper autour de syslog qui détermine s’il faut envoyer la sortie au journal ou à la console. Ici c’est au cas où quelqu’un aurait besoin de ça.

 void mylog (int level, const char *format, ...) { va_list args; va_start (args, format); if (remote) { vsyslog(level, format, args); } else { if (level == LOG_DEBUG) vsyslog(level, format, args); else vprintf(format, args); } va_end(args); } 

En tant que solution spécifique à GNU, je suggère d’utiliser openlog(NULL, LOG_PERROR, your_facility) . Non personnalisable (dupliquez simplement sur stderr).