diff --git a/maestro/logging.c b/maestro/logging.c
index 5eb5759781e0d791ec1ad683eddb518b42d87ef5..a51c134a671dc1846f8b78ac9afa56310fadc1f5 100644
--- a/maestro/logging.c
+++ b/maestro/logging.c
@@ -35,9 +35,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "maestro/env.h"
-#include "maestro/i_globals.h"
-#include "maestro/i_statistics.h"
 #include <errno.h>
 #include <ctype.h>
 
@@ -46,27 +43,43 @@
 #include <pthread_np.h>
 #endif /* HAVE_PTHREAD_NP_H */
 
-#include "maestro/logging.h"
-
+/* Careful! Syslog defines some constants that we use as macros (like LOG_ERR) */
 #ifdef HAVE_SYSLOG
-#include <syslog.h>
-#ifndef MSTRO_LOG_SYSLOG_FACILITY
+# include <syslog.h>
+# ifndef MSTRO_LOG_SYSLOG_FACILITY
 /** Log facility to use for syslog logging. Can be overridden at
  * compile time */
-#define MSTRO_LOG_SYSLOG_FACILITY LOG_LOCAL0
-#endif
+#  define MSTRO_LOG_SYSLOG_FACILITY LOG_LOCAL0
+# endif
+
+static const int g_syslog_err = LOG_ERR;
+static const int g_syslog_warning = LOG_WARNING;
+static const int g_syslog_info = LOG_INFO;
+static const int g_syslog_debug = LOG_DEBUG;
+#undef LOG_ERR
+#undef LOG_WARNING
+#undef LOG_INFO
+#undef LOG_DEBUG
 
+#include "maestro/logging.h"
 
 /* convert maestro log levels to syslog levels */
 static int mstro_loglevel2syslog[MSTRO_log__MAX] = {
-  [MSTRO_LOG_ERR]   = LOG_ERR,
-  [MSTRO_LOG_WARN]  = LOG_WARNING,
-  [MSTRO_LOG_INFO]  = LOG_INFO,
-  [MSTRO_LOG_DEBUG] = LOG_DEBUG,
-  [MSTRO_LOG_NOISE] = LOG_DEBUG
+  [MSTRO_LOG_ERR]   = g_syslog_err,
+  [MSTRO_LOG_WARN]  = g_syslog_warning,
+  [MSTRO_LOG_INFO]  = g_syslog_info,
+  [MSTRO_LOG_DEBUG] = g_syslog_debug,
+  [MSTRO_LOG_NOISE] = g_syslog_debug
 };
 
-#endif
+#endif /* SYSLOG */
+
+#include "maestro/logging.h"
+
+
+#include "maestro/env.h"
+#include "maestro/i_globals.h"
+#include "maestro/i_statistics.h"
 
 /** log to stderr */
 #define MSTRO_LOG_DST_STDERR 0