Логирование действий. Нагрузка -
Splav - 11.04.2012
Всем доброго времени суток.
У меня есть написанный с нуля TDM/GW мод. Хочу сделать логирование почти всех действий: авторизация, регистрация, перевод денег, лог убийств, лог всех админ действий, захвата ГангЗон и т.д.
Вопрос: Какая нагрузка будет на севрер. Прошу учесть для онлайна 150-200 человек
Код самой функции:
PHP код:
stock WriteLog(namelog[],string[])
{
new text[256],log[50],param[3],File:LogFile;
gettime(param[0], param[1], param[2]);
format(text, sizeof(text), "[%02d:%02d:%02d]%s\r\n",param[0], param[1], param[2],string);
getdate(param[0], param[1], param[2]);
format(log,sizeof(log),"logs/%s/[%02d][%02d]%s.log",namelog,param[2], param[1], namelog);
LogFile = fopen(log, io_append);
for(new i; text[i] != EOS; i++) fputchar(LogFile, text[i], false);
fclose(LogFile);
}
Особенно смущает постоянное открытие/закрытие файлов при записи
Если будет слишком сильно грузить сервер, то посоветуйте, как можно сделать лучше
Заранее спасибо за помощь
Re: Логирование действий. Нагрузка -
Stepashka - 11.04.2012
Тебя спасет агрегирование лога.
Re: Логирование действий. Нагрузка -
White_116 - 11.04.2012
Давно уже советовали, копишь в "буффер" логи, а потом записываешь их в файл.
Re: Логирование действий. Нагрузка -
Splav - 11.04.2012
Quote:
Originally Posted by White_116
Давно уже советовали, копишь в "буффер" логи, а потом записываешь их в файл.
|
А по-подробнее можно?
Желательно с примером
Re: Логирование действий. Нагрузка -
Stepashka - 11.04.2012
pawn Код:
CmdLog(text[], bool:write = false) {
static cmdLogData[200][384];
new time[6];
if (strlen(text)) {
for (new i; i < sizeof(cmdLogData); i++) {
if (cmdLogData[i][0] == EOS) {
getdate( time[0], time[1], time[2]);
gettime( time[3], time[4], time[5]);
format(cmdLogData[i], 384, "[%d.%02d.%02d - %02d:%02d:%02d] %s\n", time[0], time[1], time[2], time[3], time[4], time[5], text);
break;
}
}
}
if (write || strlen(cmdLogData[sizeof(cmdLogData) - 1])) {
new fileName[64];
getdate( time[0], time[1], time[2]);
gettime( time[3], time[4], time[5]);
format(fileName, 64, LOGDIR"[%d.%02d.%02d %02d-%02d-%02d] Log.txt", time[0], time[1], time[2], time[3], time[4], time[5]);
new File:file = fopen(fileName, io_write);
for (new i; i < sizeof(cmdLogData); i++) {
for( new j, len = strlen(cmdLogData[i]); j < len; j++) fputchar(file, cmdLogData[i][j], false);
cmdLogData[i][0] = EOS;
}
fclose(file);
}
return 1;
}
так
Re: Логирование действий. Нагрузка -
Jon_De - 11.04.2012
Quote:
Originally Posted by Splav
Всем доброго времени суток.
У меня есть написанный с нуля TDM/GW мод. Хочу сделать логирование почти всех действий: авторизация, регистрация, перевод денег, лог убийств, лог всех админ действий, захвата ГангЗон и т.д.
Вопрос: Какая нагрузка будет на севрер. Прошу учесть для онлайна 150-200 человек
Код самой функции:
PHP код:
stock WriteLog(namelog[],string[])
{
new text[256],log[50],param[3],File:LogFile;
gettime(param[0], param[1], param[2]);
format(text, sizeof(text), "[%02d:%02d:%02d]%s\r\n",param[0], param[1], param[2],string);
getdate(param[0], param[1], param[2]);
format(log,sizeof(log),"logs/%s/[%02d][%02d]%s.log",namelog,param[2], param[1], namelog);
LogFile = fopen(log, io_append);
for(new i; text[i] != EOS; i++) fputchar(LogFile, text[i], false);
fclose(LogFile);
}
Особенно смущает постоянное открытие/закрытие файлов при записи
Если будет слишком сильно грузить сервер, то посоветуйте, как можно сделать лучше
Заранее спасибо за помощь 
|
У Меня через printf все паблики логируются, когда мне надо. Нагрузка незаметна (если судить по наличию лагов, синхре и задержке), тем более с онлайном то 150...
Re: Логирование действий. Нагрузка -
Splav - 11.04.2012
Stepashka, большое спасибо
Re: Логирование действий. Нагрузка -
Кирилл - 12.04.2012
я считаю что нагрузка минимадьна на сервер ну если сеть то пинг подскачет примерно на 10-30, а цп на 3% в зависимости от качества хостинга. у меня вообще выделенный сервер мне разницы не чувствуется.
Re: Логирование действий. Нагрузка -
Stepashka - 12.04.2012
Quote:
Originally Posted by Кирилл
я считаю что нагрузка минимадьна на сервер ну если сеть то пинг подскачет примерно на 10-30, а цп на 3% в зависимости от качества хостинга. у меня вообще выделенный сервер мне разницы не чувствуется.
|
вы вообще тему читали или только заголовок?
Re: Логирование действий. Нагрузка -
jhonyxakep - 12.04.2012
Quote:
Особенно смущает постоянное открытие/закрытие файлов при записи
|
А вы откройте файл один раз при запуске сервера, и закройте при остановке.
Quote:
Давно уже советовали, копишь в "буффер" логи, а потом записываешь их в файл.
|
Если бы все реально было настолко тормознуто, то Apache и все все все делали также. Лично я считаю, что писать логи в файл это намного проще, удобнее, а главное быстрее. Да и не придется лишней памяти тратить на хранение инфы.
А еще можно использовать мультипоточные плагины.