powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Покритикуйте код
11 сообщений из 11, страница 1 из 1
Покритикуйте код
    #39891853
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
// запись в лог
	void AppendLog(std::string operation, std::string mess)
	{
		try
		{
			if (CreateDirectory(L"Logs", NULL) || ERROR_ALREADY_EXISTS == GetLastError())
			{
				// дата к названию файла
				time_t rawtime;
				struct tm * timeinfo;
				char bDateTime[80];
				time(&rawtime);
				timeinfo = localtime(&rawtime);
				strftime(bDateTime, sizeof(bDateTime), "_%d_%m_%Y", timeinfo);
				std::string path = "Logs\\test";
				path += bDateTime;
				path += ".txt";
				// формат строки сообщения
				//		дата
				strftime(bDateTime, sizeof(bDateTime), "%d-%m-%Y %H:%M:%S", timeinfo);				
				//		пользователь
				WCHAR username[UNLEN + 1];
				DWORD username_len = UNLEN + 1;
				GetUserName(username, &username_len);
				// формат строки
				std::string res;
				res += bDateTime;
				res += " | ";
				res += WC2MB(HostName());
				res += " | ";
				res += WC2MB(username);
				res += " | ";
				res += WC2MB(UserSID());
				res += " | ";
				res += "version: ";
				res += WC2MB(GetCurrVersion());
				res += " | ";
				res += operation;
				res += " | ";
				res += mess;
				res += "\n";
				// сохраняем в файл
				std::ofstream outfile;
				outfile.open(path, std::ios_base::app);
				outfile << res;
			}
		}
		catch (int ex)
		{
			std::cout << "AppendLog: " << "Caught exception number:  " << ex << std::endl;
		}
	}
...
Рейтинг: 0 / 0
Покритикуйте код
    #39891918
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем эта колбаса? Выводи сразу в cout.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
std::string res;
				res += bDateTime;
				res += " | ";
				res += WC2MB(HostName());
				res += " | ";
				res += WC2MB(username);
				res += " | ";
				res += WC2MB(UserSID());
				res += " | ";
				res += "version: ";
				res += WC2MB(GetCurrVersion());
				res += " | ";
				res += operation;
				res += " | ";
				res += mess;
				res += "\n";
...
Рейтинг: 0 / 0
Покритикуйте код
    #39891926
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Зачем эта колбаса? Выводи сразу в cout.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
std::string res;
				res += bDateTime;
				res += " | ";
				res += WC2MB(HostName());
				res += " | ";
				res += WC2MB(username);
				res += " | ";
				res += WC2MB(UserSID());
				res += " | ";
				res += "version: ";
				res += WC2MB(GetCurrVersion());
				res += " | ";
				res += operation;
				res += " | ";
				res += mess;
				res += "\n";



в файл пишу, а не на консоль
...
Рейтинг: 0 / 0
Покритикуйте код
    #39891932
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview, тем более. Пиши потоком. Зачем тебе толстая одна строка?
...
Рейтинг: 0 / 0
Покритикуйте код
    #39891945
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЗачем тебе толстая одна строка?

Чтоб "слоники бегали" и тормозили нипадецки. Хотя тут ещё вопрос на засыпку: а буферизует
ли вывод std::ofstream и если да, то какого размера у него буфер.

Хотя на фоне создания каталога и открытия файла на каждый чих, разницы уже, наверное, никакой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Покритикуйте код
    #39892051
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должен буферизировать. Ну я надеюсь на это.
...
Рейтинг: 0 / 0
Покритикуйте код
    #39892056
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview,
предварительная проверка длины (будущего) файла не требуется? с переименованием "заполненного" фацла
...
Рейтинг: 0 / 0
Покритикуйте код
    #39892118
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview,

Готовый логгер никак не применить?
...
Рейтинг: 0 / 0
Покритикуйте код
    #39892152
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы CreateDirectory поменял на стантартную библиотеку.
сразу добавится переносимость


Код: plaintext
1.
2.
3.
std::ofstream outfile;
				outfile.open(path, std::ios_base::app);
				outfile << res;


а если не удалось записать, то сообщение пропадет.
а оно может быть очень важным и стоить много денег.

почему бы не вынести формирование строки с временем в отдельную функции? а еще лучше - просто требовать префикс сообщения сверху.
кто вызывает - тот пусть и подает что ему надо и как ему надо.
может там еще IP захочется прилепить?
...
Рейтинг: 0 / 0
Покритикуйте код
    #39892154
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
operation похоже вообще не используется.

нужно у компилятора включить все предупреждения и включить трактование предупреждений как ошибки.
это обязательно.
...
Рейтинг: 0 / 0
Покритикуйте код
    #39892158
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
Код: plaintext
1.
CreateDirectory(L"Logs", NULL)


Подпапка Logs будет создана в текущей папке, а текущей может оказаться любая. Правильнее указать полный путь.

И как выше написали каждый раз не обязательно ее создавать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
static std::string log_folder;
if(log_folder.empty()) {
	log_folder = "Logs";
	if (!CreateDirectory(log_folder, NULL) && ERROR_ALREADY_EXISTS != GetLastError()) {
		// ошибка создания подпапки
		log_folder = "";
		return ...
	}
}
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Покритикуйте код
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]