int main(int argc, char *argv[]) {
const char *namespace;
+ LogTarget log_target;
Server server;
int r;
namespace = argc > 1 ? empty_to_null(argv[1]) : NULL;
- log_set_prohibit_ipc(true);
- log_set_target(LOG_TARGET_AUTO);
+ /* So here's the deal: journald can't be considered as regular daemon when it comes to
+ * logging hence LOG_TARGET_AUTO won't do the right thing for it. Hence explicitly log to
+ * the console if we're started from a console or to kmsg otherwise. */
+ log_target = isatty(STDERR_FILENO) > 0 ? LOG_TARGET_CONSOLE : LOG_TARGET_KMSG;
+
+ log_set_prohibit_ipc(true); /* better safe than sorry */
+ log_set_target(log_target);
log_set_facility(LOG_SYSLOG);
log_parse_environment();
log_open();