Логирование действий. Нагрузка
#1

Всем доброго времени суток.

У меня есть написанный с нуля 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(textsizeof(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(logio_append);
    for(new 
itext[i] != EOSi++) fputchar(LogFiletext[i], false);
    
fclose(LogFile);

Особенно смущает постоянное открытие/закрытие файлов при записи

Если будет слишком сильно грузить сервер, то посоветуйте, как можно сделать лучше

Заранее спасибо за помощь
Reply
#2

Тебя спасет агрегирование лога.
Reply
#3

Давно уже советовали, копишь в "буффер" логи, а потом записываешь их в файл.
Reply
#4

Quote:
Originally Posted by White_116
Давно уже советовали, копишь в "буффер" логи, а потом записываешь их в файл.
А по-подробнее можно?

Желательно с примером
Reply
#5

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;
}
так
Reply
#6

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(textsizeof(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(logio_append);
    for(new 
itext[i] != EOSi++) fputchar(LogFiletext[i], false);
    
fclose(LogFile);

Особенно смущает постоянное открытие/закрытие файлов при записи

Если будет слишком сильно грузить сервер, то посоветуйте, как можно сделать лучше

Заранее спасибо за помощь
У Меня через printf все паблики логируются, когда мне надо. Нагрузка незаметна (если судить по наличию лагов, синхре и задержке), тем более с онлайном то 150...
Reply
#7

Stepashka, большое спасибо
Reply
#8

я считаю что нагрузка минимадьна на сервер ну если сеть то пинг подскачет примерно на 10-30, а цп на 3% в зависимости от качества хостинга. у меня вообще выделенный сервер мне разницы не чувствуется.
Reply
#9

Quote:
Originally Posted by Кирилл
Посмотреть сообщение
я считаю что нагрузка минимадьна на сервер ну если сеть то пинг подскачет примерно на 10-30, а цп на 3% в зависимости от качества хостинга. у меня вообще выделенный сервер мне разницы не чувствуется.
вы вообще тему читали или только заголовок?
Reply
#10

Quote:

Особенно смущает постоянное открытие/закрытие файлов при записи

А вы откройте файл один раз при запуске сервера, и закройте при остановке.

Quote:

Давно уже советовали, копишь в "буффер" логи, а потом записываешь их в файл.

Если бы все реально было настолко тормознуто, то Apache и все все все делали также. Лично я считаю, что писать логи в файл это намного проще, удобнее, а главное быстрее. Да и не придется лишней памяти тратить на хранение инфы.

А еще можно использовать мультипоточные плагины.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)