diff -Nru tremulous/src/game/g_local.h tremulous.temp/src/game/g_local.h
--- tremulous/src/game/g_local.h	2007-04-16 19:32:08.000000000 +0200
+++ tremulous.temp/src/game/g_local.h	2007-04-16 19:32:44.000000000 +0200
@@ -930,6 +930,7 @@
 void FindIntermissionPoint( void );
 void G_RunThink( gentity_t *ent );
 void QDECL G_LogPrintf( const char *fmt, ... );
+void QDECL G_LogOnlyPrintf( const char *fmt, ... );
 void SendScoreboardMessageToAllClients( void );
 void QDECL G_Printf( const char *fmt, ... );
 void QDECL G_Error( const char *fmt, ... );
diff -Nru tremulous/src/game/g_main.c tremulous.temp/src/game/g_main.c
--- tremulous/src/game/g_main.c	2007-04-16 19:32:08.000000000 +0200
+++ tremulous.temp/src/game/g_main.c	2007-04-16 19:32:44.000000000 +0200
@@ -1620,6 +1620,38 @@
 
 /*
 =================
+G_LogOnlyPrintf
+
+Print to the logfile only (not console) with a time stamp if it is open
+=================
+*/
+void QDECL G_LogOnlyPrintf( const char *fmt, ... )
+{
+  va_list argptr;
+  char    string[ 1024 ];
+  int     min, tens, sec;
+
+  sec = level.time / 1000;
+
+  min = sec / 60;
+  sec -= min * 60;
+  tens = sec / 10;
+  sec -= tens * 10;
+
+  Com_sprintf( string, sizeof( string ), "%3i:%i%i ", min, tens, sec );
+
+  va_start( argptr, fmt );
+  vsprintf( string +7 , fmt,argptr );
+  va_end( argptr );
+
+  if( !level.logFile )
+    return;
+
+  trap_FS_Write( string, strlen( string ), level.logFile );
+}
+
+/*
+=================
 G_SendGameStat
 =================
 */
