Доработочка класса/скрипта от NoNameUltima
Сокращено название класса
Добавлена функция ротации логов (как в линухе) - Rotate(string File, int FileNum) 1й параметр имя путь-файла, второй кол-во копий
Перед строкой с текстом всегда прописывается текущая дата и время хоста на котором работает сервер
Код
class LogClass
{
private FileHandle Handle;
void LogClass()
{
Print("::: LogClass ::: Init :::");
}
void ~LogClass()
{
Print("::: LogClass ::: UnInit :::");
}
void Save(string File, string String)
{
private int year, month, day, hour, minute, second;
Print("::: [LogClass]: Save: " + File);
if (!FileExist(File))
{
Handle = OpenFile(File,FileMode.WRITE);
}
else
{
Handle = OpenFile(File, FileMode.APPEND);
}
if ( Handle == 0 )
{
Print("::: [LogClass]: Can not write file: " + File);
return;
}
FPrintln(Handle, DataBase_GetDate() + "," + DataBase_GetTime() + " : " + String);
CloseFile(Handle);
}
void Rotate(string File, int FileNum)
{
Print("::: [LogClass]: Rotate: " + File);
if (!FileExist(File))
{
Print("::: [LogClass]: Rotate: File not exists: " + File);
return;
}
else
{
for ( int i = FileNum; i > 0; i-- )
{
Print("::: [LogClass]: Rotate: File: " + File + "." + i);
if (FileExist(File + "." + i))
{
Print("::: [LogClass]: Rotate: DeleteFile: " + File + "." + i);
DeleteFile(File + "." + i);
}
if (FileExist(File + "." + (i - 1)))
{
Print("::: [LogClass]: Rotate: CopyFile: " + File + "." + (i - 1) + " => " + File + "." + i);
CopyFile(File + "." + (i - 1), File + "." + i);
}
}
CopyFile(File, File + ".0");
DeleteFile(File);
}
}
static string DataBase_GetDate()
{
int year, month, day;
GetYearMonthDay(year, month, day);
string date = day.ToStringLen(2) + "." + month.ToStringLen(2) + "." + year.ToStringLen(2);
return date;
}
static string DataBase_GetTime()
{
int hour, minute, second;
GetHourMinuteSecond(hour, minute, second);
string time = hour.ToStringLen(2) + ":" + minute.ToStringLen(2) + ":" + second.ToStringLen(2);
return time;
}
};