- 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();
}
endl'ы лишние всего лишь.
Открывать-закрывать каждый раз файл вероятно не лучшее решение.
данный вариант универсален и может использоваться в любом месте программы... да он медленный, но в дебаг режиме это неважно, а в релиз эта функция не попадет......
Это же С++. Там есть конструктор/деструктор.
>в функциях которые выполняются до main
О каких функциях речь ?
>в дебаг режиме это неважно
С чего вообще появилась мысль о дебаге?
в большинстве случаев логирование в конечном продукте не нужно, вполне достаточно информации об ошибке...
Деструкторы уж вряд ли :)
>типа инициализация при первом использовании
Так и что в этом плохого?
>в большинстве случаев логирование в конечном продукте не нужно
Смотря какой продукт. В каком-нибудь мелком - скорее да, чем нет.
В крупном - наоборот.
а для отлова ошибок, лучше нагородить систему типа commit log... то есть лог заводится в определенном месте (там где он нужен), если произошла ошибка, сохраняем лог в который дописываем адрес ошибки, содержимое стека, регистры, любую другую информацию которая подскажет где и почему ошибка... если ошибки нет, лог стираем... либо лог в виде циклического буфера, то есть затираем самые старые сообщения, при ошибке сохраняем на диск либо отправляем отчет...
Одно дело лог доступа в каком-нибудь сервере.
И совсем другое - лог отладочный.
Первый нужен пользователю, второй - разработчику.
При этом второй тип лога востребован гораздо чаще.
Под частотой имеется в виду отношение подсистем логирования к числу программ.
P.S. Где/как заводятся логи и как обрабатываются это уже нюансы. Не вижу смысла акцентировать на них внимание.
С другой стороны само определение говнокода довольно размыто.
Я бы даже сказал : размазано.
изо дня в день ...
единственный остающийся наезд на этот код с вашей стороны это производительность, но в месте его применения (я имею ввиду отладочную версию) она не важна...
этот код можно считать говнокодом, только если лог фай является одним из результатов работы программы, расчитанной на высокую производительность...
ну и как бы KISS никто не отменял...
>KISS никто не отменял
И не надо меня ЦЕЛОВАТЬ
и СТЛ тут не причем...
Може собака в офстриме зарыта, но я тогда не в теме)
Какие ?
Имел ввиду, сразу не инициализрованные. Имхо плохо так.