- 1
- 2
- 3
- 4
- 5
- 6
- 7
void log(string srv, string text) {
time_t rawtime; tm * ptm; time ( &rawtime ); ptm = gmtime ( &rawtime );
ofstream logfile(LOG, ios::app);
logfile << (ptm->tm_year+1900) << "-" << (ptm->tm_mon+1) << "-" << ptm->tm_mday << " "
<< (ptm->tm_hour+MSD%24) << ":" << ptm->tm_min << ":" << ptm->tm_sec << endl << srv << ":\t" << text << endl << endl;
logfile.close();
}
pushkoff 14.08.2010 21:35 # 0
absolut 15.08.2010 10:55 # +2
endl'ы лишние всего лишь.
Открывать-закрывать каждый раз файл вероятно не лучшее решение.
pushkoff 15.08.2010 15:47 # 0
absolut 15.08.2010 16:16 # +1
pushkoff 15.08.2010 16:51 # −1
данный вариант универсален и может использоваться в любом месте программы... да он медленный, но в дебаг режиме это неважно, а в релиз эта функция не попадет......
absolut 15.08.2010 21:36 # +2
Это же С++. Там есть конструктор/деструктор.
>в функциях которые выполняются до main
О каких функциях речь ?
>в дебаг режиме это неважно
С чего вообще появилась мысль о дебаге?
pushkoff 15.08.2010 23:51 # +1
в большинстве случаев логирование в конечном продукте не нужно, вполне достаточно информации об ошибке...
absolut 16.08.2010 07:26 # +2
Деструкторы уж вряд ли :)
>типа инициализация при первом использовании
Так и что в этом плохого?
>в большинстве случаев логирование в конечном продукте не нужно
Смотря какой продукт. В каком-нибудь мелком - скорее да, чем нет.
В крупном - наоборот.
pushkoff 16.08.2010 12:16 # −2
а для отлова ошибок, лучше нагородить систему типа commit log... то есть лог заводится в определенном месте (там где он нужен), если произошла ошибка, сохраняем лог в который дописываем адрес ошибки, содержимое стека, регистры, любую другую информацию которая подскажет где и почему ошибка... если ошибки нет, лог стираем... либо лог в виде циклического буфера, то есть затираем самые старые сообщения, при ошибке сохраняем на диск либо отправляем отчет...
absolut 17.08.2010 09:39 # 0
Одно дело лог доступа в каком-нибудь сервере.
И совсем другое - лог отладочный.
Первый нужен пользователю, второй - разработчику.
При этом второй тип лога востребован гораздо чаще.
Под частотой имеется в виду отношение подсистем логирования к числу программ.
P.S. Где/как заводятся логи и как обрабатываются это уже нюансы. Не вижу смысла акцентировать на них внимание.
pushkoff 17.08.2010 12:30 # 0
absolut 17.08.2010 13:02 # 0
Altravert 17.08.2010 13:19 # +1
absolut 17.08.2010 13:44 # +2
С другой стороны само определение говнокода довольно размыто.
Я бы даже сказал : размазано.
Altravert 17.08.2010 13:56 # 0
absolut 17.08.2010 14:41 # 0
изо дня в день ...
pushkoff 17.08.2010 15:24 # −1
единственный остающийся наезд на этот код с вашей стороны это производительность, но в месте его применения (я имею ввиду отладочную версию) она не важна...
этот код можно считать говнокодом, только если лог фай является одним из результатов работы программы, расчитанной на высокую производительность...
ну и как бы KISS никто не отменял...
absolut 17.08.2010 15:33 # 0
>KISS никто не отменял
И не надо меня ЦЕЛОВАТЬ
pushkoff 17.08.2010 17:11 # −1
и СТЛ тут не причем...
Altravert 14.08.2010 21:43 # 0
Може собака в офстриме зарыта, но я тогда не в теме)
absolut 15.08.2010 10:56 # 0
Какие ?
Altravert 15.08.2010 15:47 # +1
Имел ввиду, сразу не инициализрованные. Имхо плохо так.
absolut 15.08.2010 16:19 # 0