diff --git a/src/ngircd/channel.c b/src/ngircd/channel.c
index 7c3360a..e533e75 100644
--- a/src/ngircd/channel.c
+++ b/src/ngircd/channel.c
@@ -63,8 +63,16 @@ static bool Delete_Channel PARAMS(( CHANNEL *Chan ));
 GLOBAL void
 Channel_Init( void )
 {
+	CHANNEL *sc;
+
 	My_Channels = NULL;
 	My_Cl2Chan = NULL;
+
+	sc = Channel_Create("&SERVER");
+	if (sc) {
+		Channel_SetModes(sc, "tP");
+		Channel_SetTopic(sc, Client_ThisServer(), "Server Messages");
+	}
 } /* Channel_Init */
 
 
@@ -1013,6 +1021,26 @@ Channel_ShowInvites( CLIENT *Client, CHANNEL *Channel )
 }
 
 
+/**
+ * Log a message to the local &SERVER channel, if it exists.
+ */
+GLOBAL void
+Channel_LogServer(char *msg)
+{
+	CHANNEL *sc;
+	CLIENT *c;
+
+	assert(msg != NULL);
+
+	sc = Channel_Search("&SERVER");
+	if (!sc)
+		return;
+
+	c = Client_ThisServer();
+	Channel_Write(sc, c, c, "PRIVMSG", false, msg);
+} /* Channel_LogServer */
+
+
 static CL2CHAN *
 Get_First_Cl2Chan( CLIENT *Client, CHANNEL *Chan )
 {
diff --git a/src/ngircd/channel.h b/src/ngircd/channel.h
index 91cc278..91d1e21 100644
--- a/src/ngircd/channel.h
+++ b/src/ngircd/channel.h
@@ -125,6 +125,8 @@ GLOBAL bool Channel_AddBan PARAMS((CHANNEL *c, const char *Mask ));
 GLOBAL bool Channel_ShowBans PARAMS((CLIENT *client, CHANNEL *c));
 GLOBAL bool Channel_ShowInvites PARAMS((CLIENT *client, CHANNEL *c));
 
+GLOBAL void Channel_LogServer PARAMS((char *msg));
+
 #define Channel_IsLocal(c) (Channel_Name(c)[0] == '&')
 
 
diff --git a/src/ngircd/log.c b/src/ngircd/log.c
index 5edbf36..d450bd0 100644
--- a/src/ngircd/log.c
+++ b/src/ngircd/log.c
@@ -61,7 +61,7 @@ Log_Init( bool Daemon_Mode )
 	Is_Daemon = Daemon_Mode;
 	
 #ifdef SYSLOG
-#ifndef LOG_CONS	/* Kludge: mips-dec-ultrix4.5 has no LOG_CONS/LOG_LOCAL5 */
+#ifndef LOG_CONS     /* Kludge: mips-dec-ultrix4.5 has no LOG_CONS/LOG_LOCAL5 */
 #define LOG_CONS 0
 #endif
 #ifndef LOG_LOCAL5
@@ -202,6 +202,8 @@ va_dcl
  * Logging function of ngIRCd.
  * This function logs messages to the console and/or syslog, whichever is
  * suitable for the mode ngIRCd is running in (daemon vs. non-daemon).
+ * If LOG_snotice is set, the log messages goes to all user with the mode +s
+ * set and the local &SERVER channel, too.
  * Please note: you sould use LogDebug(...) for debug messages!
  * @param Level syslog level (LOG_xxx)
  * @param Format Format string like printf().
@@ -218,7 +220,6 @@ const char *Format;
 va_dcl
 #endif
 {
-	/* Eintrag in Logfile(s) schreiben */
 	char msg[MAX_LOG_MSG_LEN];
 	bool snotice;
 	va_list ap;
@@ -239,7 +240,6 @@ va_dcl
 	if( Level == LOG_DEBUG ) return;
 #endif
 
-	/* String mit variablen Argumenten zusammenbauen ... */
 #ifdef PROTOTYPES
 	va_start( ap, Format );
 #else
@@ -269,10 +269,11 @@ va_dcl
 		fflush( stderr );
 	}
 
-	if( snotice )
-	{
-		/* NOTICE an lokale User mit "s"-Mode */
-		Wall_ServerNotice( msg );
+	if (snotice) {
+		/* Send NOTICE to all local users with mode +s and to the
+		 * local &SERVER channel */
+		Wall_ServerNotice(msg);
+		Channel_LogServer(msg);
 	}
 } /* Log */
 
