PDA

Просмотр полной версии : [Вопрос] Логи сервера



verteich
30.08.2019, 22:18
Как можно реализовать систему логов сервера? К примеру игрок купил дом и это сохранилось в его логах и в логах домов, это сохраняется в базе данных, игрок авторизовался, это действие тоже залогировалось в базу данных, как такое можно сделать и как лучше всего будет?
Также, как можно будет по минимуму уменьшать размер такой базы? Так как место не у всех бесконечное :)

vvw
30.08.2019, 22:38
Есть инструкменты из коробки, например, для PostgreSQL, позволяющие логировать события. В MySQL вроде бы тоже должны быть какие-то инструменты из коробки.

DeimoS
30.08.2019, 23:47
Как можно реализовать систему логов сервера? К примеру игрок купил дом и это сохранилось в его логах и в логах домов, это сохраняется в базе данных, игрок авторизовался, это действие тоже залогировалось в базу данных, как такое можно сделать и как лучше всего будет?
Также, как можно будет по минимуму уменьшать размер такой базы? Так как место не у всех бесконечное :)

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



Если планируешь различные выборки данных делать - mysql. Создаёшь одну таблицу, в которой будут перечислены типы логов, а-ля:


id
type_name


0
Покупка дома


1
Продажа дома


2
Передача денег игроку




И вторую таблицу, в которой будут содержаться сами логи. Вторая таблица будет ссылаться на первую, чтоб не хранить одинаковый текст.
Например, лог того, как игрок с ID аккаунта 3026 сначала купил дом под ID 100, а потом его продал:


id
account_id
type_id
value


1
3026
0
100


1
3026
1
100



При нужде, можно количество столбцов "value_№" увеличить (например, чтоб при передаче денег в "account_id" хранить ID того, кто передал, в "value_1" хранить ID того, кому передали, а в "value_2" хранить сумму, которую передали) и уже для чтения таких логов написать соответствующие запросы, которые будут объединять вторую таблицу с первой и формировать на основе данных читаемый текст вместо набора чисел.
Такой вариант будет одним из самых экономных для MySQL.


Ну и если у тебя ограниченное дисковое пространство, что в обоих случаях два пути решения: либо периодически выгружать логи на компьютер с хостинга и чистить хостинг от них, либо просто удалять старые логи время от времени. Третьего не дано :)

verteich
31.08.2019, 00:10
Если логи чисто для себя и планируешь их просматривать вручную - можно всё писать в файл, взяв какой-нибудь плагин для пущего эффекта. Тут экономить особо не получится так, чтоб не пострадало удобство.



Если планируешь различные выборки данных делать - mysql. Создаёшь одну таблицу, в которой будут перечислены типы логов, а-ля:


id
type_name


0
Покупка дома


1
Продажа дома


2
Передача денег игроку




И вторую таблицу, в которой будут содержаться сами логи. Вторая таблица будет ссылаться на первую, чтоб не хранить одинаковый текст.
Например, лог того, как игрок с ID аккаунта 3026 сначала купил дом под ID 100, а потом его продал:


id
account_id
type_id
value


1
3026
0
100


1
3026
1
100



При нужде, можно количество столбцов "value_№" увеличить (например, чтоб при передаче денег в "account_id" хранить ID того, кто передал, в "value_1" хранить ID того, кому передали, а в "value_2" хранить сумму, которую передали) и уже для чтения таких логов написать соответствующие запросы, которые будут объединять вторую таблицу с первой и формировать на основе данных читаемый текст вместо набора чисел.
Такой вариант будет одним из самых экономных для MySQL.


Ну и если у тебя ограниченное дисковое пространство, что в обоих случаях два пути решения: либо периодически выгружать логи на компьютер с хостинга и чистить хостинг от них, либо просто удалять старые логи время от времени. Третьего не дано :)

Ясно, какие плагины порекомендуете, для записи логов и т.д, и способы какие? Можно ли так же используя файлы на сайт вывести логи?

DeimoS
31.08.2019, 01:08
Ясно, какие плагины порекомендуете, для записи логов и т.д, и способы какие?

Плагин посоветовать не могу, ибо всё зависит от твоих нужд. Ну, например, FileManager (https://forum.sa-mp.com/showthread.php?t=92246) позволяет работать не только внутри папки "scriptfiles" и не подвержен багам стандартных функций, вызывающих краши.


Можно ли так же используя файлы на сайт вывести логи?

Вывести - можно. Как и содержимое обычного текстового файла. Со всеми сопутствующими трудностями с поиском нужной информации и т.п.


Опять же, если планируется искать какую-то конкретную информацию среди логов - лучше делать через MySQL. Логи на файлах пригодятся разве что для того, чтоб иметь возможность в редкие моменты найти ту или иную инфу по прошлым дням. Часто и на постоянной основе производить поиск конкретной информации среди всего файла - гораздо более затратное занятие, нежели с реализацией на MySQL.

tnc
01.09.2019, 18:06
FileManager (https://forum.sa-mp.com/showthread.php?t=92246)
Есть более новый плагин и более новой кодовой базой. pawn-fsutil (https://github.com/Southclaws/pawn-fsutil)


Ясно, какие плагины порекомендуете, для записи логов и т.д, и способы какие? Можно ли так же используя файлы на сайт вывести логи?

Southclaws сделал логгер (https://github.com/Southclaws/samp-logger) для SA-MP. Можно использовать его.