#include "portab.h"
-static char UNUSED id[] = "$Id: log.c,v 1.62 2006/08/05 09:16:21 fw Exp $";
-
#include "imp.h"
#include <assert.h>
#include <errno.h>
static void Wall_ServerNotice PARAMS(( char *Msg ));
+static void
+Log_Message(int Level, const char *msg)
+{
+ if (!Is_Daemon) {
+ /* log to console */
+ fprintf(stdout, "[%ld:%d %4ld] %s\n", (long)getpid(), Level,
+ (long)time(NULL) - NGIRCd_Start, msg);
+ fflush(stdout);
+ }
+#ifdef SYSLOG
+ else {
+ syslog(Level, "%s", msg);
+ }
+#endif
+}
+
GLOBAL void
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
* 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().
va_dcl
#endif
{
- /* Eintrag in Logfile(s) schreiben */
char msg[MAX_LOG_MSG_LEN];
bool snotice;
va_list ap;
if( Level == LOG_DEBUG ) return;
#endif
- /* String mit variablen Argumenten zusammenbauen ... */
#ifdef PROTOTYPES
va_start( ap, Format );
#else
vsnprintf( msg, MAX_LOG_MSG_LEN, Format, ap );
va_end( ap );
- if (!Is_Daemon) {
- /* log to console */
- fprintf(stdout, "[%d:%d %4ld] %s\n", (int)getpid( ), Level,
- time(NULL) - NGIRCd_Start, msg);
- fflush(stdout);
- }
-#ifdef SYSLOG
- else
- {
- /* Syslog */
- syslog( Level, "%s", msg );
- }
-#endif
+ Log_Message(Level, msg);
- if( Level <= LOG_CRIT )
- {
+ if (Level <= LOG_CRIT) {
/* log critical messages to stderr */
- fprintf( stderr, "%s\n", msg );
- fflush( stderr );
+ fprintf(stderr, "%s\n", msg);
+ 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 */
openlog( PACKAGE_NAME, LOG_CONS|LOG_PID, LOG_LOCAL5 );
#endif
#ifdef DEBUG
- Log_Resolver( LOG_DEBUG, "Resolver sub-process starting, PID %d.", getpid( ));
+ Log_Resolver(LOG_DEBUG, "Resolver sub-process starting, PID %ld.", (long)getpid());
#endif
} /* Log_Init_Resolver */
Log_Exit_Resolver( void )
{
#ifdef DEBUG
- Log_Resolver( LOG_DEBUG, "Resolver sub-process %d done.", getpid( ));
+ Log_Resolver(LOG_DEBUG, "Resolver sub-process %ld done.", (long)getpid());
#endif
#ifdef SYSLOG
closelog( );
vsnprintf( msg, MAX_LOG_MSG_LEN, Format, ap );
va_end( ap );
- if( ! Is_Daemon )
- {
- /* Output to console */
- fprintf( stdout, "[%d:%d] %s\n", (int)getpid( ), Level, msg );
- fflush( stdout );
- }
-#ifdef SYSLOG
- else syslog( Level, "%s", msg );
-#endif
+ Log_Message(Level, msg);
} /* Log_Resolver */