Задать вопрос
@vGrabko99
html, css, js, php, golang, mysql

Что скажете о моей реализации логирования?

Привет. Я сделал гибкую систему для ведения логов. Я в конфиг могу добавлять новые типы логов и удалять их
"Types"     : [
		"Debug",
		"Info",
		"Warn",
		"Error",
		"Fatal"
	]

Также я могу с лёгкостью добавить тип о котором надо уведомлять на емейл
"EmailSend" : [
		"Error",
		"Fatal"
]

Теперь об архитектуре
Есть библиотека которую я использую в своём коде. Её использование элементарно
logs.New("Debug","test")
Она проверяет данные и пишет их в формате
('time log','type log','message log'),('time log','type log','message log'),('time log','type log','message log')

в редис. В фоне висит демон который каждые n-секунд удаляет данные с редиса и помещает их пачкой в бд (на данный момент в mysql). В итоге я могу хоть 800к логов загнать в бд без большой нагрузки на неё. Какие будут советы по улучшению моей поделки? стоит о ней писать статейку на хабре и заливать на github ? Всем спасибо.

UPD

Данные в редисе pastebin.com/PUvLpRgL
Конфиг pastebin.com/GeZxCnGU

Из данных в редисе я удаляю последнюю кому и пихаю их в sql запрос
DB.Exec("INSERT INTO " + MysqlTable + " (type,time,messages) VALUES" + strings.TrimRight(data, ","))

И обновляю данные в редисе на пробел. И так в вечном цикле (он тормозит с помощью time.Sleep на количество секунд указанных в конфиге)

Я только что 1 000 000 записей в мускуль добавил за 25мс на слабеньком впс (частота 1.6; 1ядро, 2 гб озу) в коробочной конфигурации.

Статья + весь код на хабре
  • Вопрос задан
  • 1475 просмотров
Подписаться 4 4 комментария
Подписчики вопроса 4 К ответам на вопрос (1)