Engine
Class StatLogFile

source: e:\games\UnrealTournament\Engine\Classes\StatLogFile.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Info
         |
         +--Engine.StatLog
            |
            +--Engine.StatLogFile
Direct Known Subclasses:UTStatLogFile

class StatLogFile
extends Engine.StatLog

//============================================================================= // Logs game events for stat collection // // Logs to a file. //=============================================================================
Variables
 int LogAr
           C++ FArchive*.
 string StatLogFile
           C++ FArchive*.
 string StatLogFinal
           C++ FArchive*.
 bool bWatermark


Function Summary
 void CloseLog()
 void FileFlush()
 void FileLog(string EventString)
 void FlushLog()
 void GetChecksum(out string)
 string GetLogFileName()
     
// Return a logfile name if relevant.
 void LogEventString(string EventString)
 void LogGameEnd(string Reason)
 void LogPlayerConnect(Pawn Player, optional string)
 void OpenLog()
     
// File Manipulation
 void StartLog()
     
// Logging.
 void StopLog()
 void Watermark(string EventString)



Source Code


00001	//=============================================================================
00002	// Logs game events for stat collection
00003	//
00004	// Logs to a file.
00005	//=============================================================================
00006	class StatLogFile extends StatLog
00007		native;
00008	
00009	var bool bWatermark;
00010	
00011	// Internal
00012	var int LogAr; // C++ FArchive*.
00013	
00014	// Configs
00015	var string StatLogFile;
00016	var string StatLogFinal;
00017	
00018	// File Manipulation
00019	native final function OpenLog();
00020	native final function CloseLog();
00021	native final function Watermark( string EventString );
00022	native final function GetChecksum( out string Checksum );
00023	native final function FileFlush();
00024	native final function FileLog( string EventString );
00025	
00026	// Logging.
00027	function StartLog()
00028	{
00029		local string FileName;
00030		local string AbsoluteTime;
00031	
00032		SaveConfig();
00033	
00034		AbsoluteTime = GetShortAbsoluteTime();
00035		if (!bWorld)
00036		{
00037			FileName = LocalLogDir$"/"$GameName$"."$LocalStandard$"."$AbsoluteTime$"."$Level.Game.GetServerPort();
00038			StatLogFile = FileName$".tmp";
00039			StatLogFinal = FileName$".log";
00040		} else {
00041			FileName = WorldLogDir$"/"$GameName$"."$WorldStandard$"."$AbsoluteTime$"."$Level.Game.GetServerPort();
00042			StatLogFile = FileName$".tmp";
00043			StatLogFinal = FileName$".log";
00044			bWatermark = True;
00045		}
00046	
00047		OpenLog();
00048	}
00049	
00050	function StopLog()
00051	{
00052		FlushLog();
00053		CloseLog();
00054	}
00055	
00056	function FlushLog()
00057	{
00058		FileFlush();
00059	}
00060	
00061	function LogEventString( string EventString )
00062	{
00063		if( bWatermark )
00064			Watermark( EventString );
00065		FileLog( EventString );
00066		FlushLog();
00067	}
00068	
00069	// Return a logfile name if relevant.
00070	function string GetLogFileName()
00071	{
00072		return StatLogFinal;
00073	}
00074	
00075	function LogPlayerConnect(Pawn Player, optional string Checksum)
00076	{
00077		if( bWorld )
00078		{
00079			if( Player.PlayerReplicationInfo.bIsABot )
00080				Checksum = "IsABot";
00081			if (Player.IsA('PlayerPawn'))
00082				LogEventString( GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Connect"$Chr(9)$Player.PlayerReplicationInfo.PlayerName$Chr(9)$Player.PlayerReplicationInfo.PlayerID$Chr(9)$PlayerPawn(Player).bAdmin$Chr(9)$Checksum );
00083			else
00084				LogEventString( GetTimeStamp()$Chr(9)$"player"$Chr(9)$"Connect"$Chr(9)$Player.PlayerReplicationInfo.PlayerName$Chr(9)$Player.PlayerReplicationInfo.PlayerID$Chr(9)$False$Chr(9)$Checksum );
00085			LogPlayerInfo( Player );
00086		}
00087		else Super.LogPlayerConnect( Player, Checksum );
00088	}
00089	
00090	function LogGameEnd( string Reason )
00091	{
00092		local string Checksum;
00093	
00094		if( bWorld )
00095		{
00096			bWatermark = False;
00097			GetChecksum( Checksum );
00098			LogEventString(GetTimeStamp()$Chr(9)$"game_end"$Chr(9)$Reason$Chr(9)$Checksum$"");
00099		}
00100		else Super.LogGameEnd(Reason);
00101	}
00102	
00103	defaultproperties
00104	{
00105	     StatLogFile="../Logs/unreal.ngStats.Unknown.log"
00106	}

End Source Code