dmnBrest
@dmnBrest
Salesforce for money. Python, Go, Ruby for soul.

Как вы отлаживаете web приложение на Go?

Очередной вопрос в копилку Go :)
Как вы отлаживаете web приложение на Go?
Поделитесь своими рецептами.

Я пока просто использую glog, который настроил на вывод в console. Размер выводимой информации стал расти и стало очень неудобно ковыряться в портянке серого текста в поисках нужной строки. Не думаю что разработка серьезных приложений ведется таким образом.
(фреймворки не предлагать, только отдельные библиотеки)

Поискал в нете, нашел один из вариантов - craig.is/writing/chrome-logger для вывода отладочной информации прямо в браузер. Там даже есть что-то для Go.

Что еще можно использовать?
  • Вопрос задан
  • 2294 просмотра
Решения вопроса 2
@SilentFl
Есть еще такой стандартный пакет как expvar, он выдает json-структуру по пути /debug/vars
Публикуете нужные переменные - и видите их состояние в любой момент времени, и до кучи состояние памяти.
Ответ написан
mututunus
@mututunus
Backend developer (Python, Golang)
Logrus гораздо лучше чем glog.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dmnBrest
@dmnBrest Автор вопроса
Salesforce for money. Python, Go, Ruby for soul.
Накидал простой способ, наверное по такому принципу работают все логеры, которые выводят в браузере красивые панели с отладочной информацией.
в обработчике запроса создается массив строк, к который складываются сообщения (в перспективе массив строк можно усложнить и сделать массив структур, которые будут содержать тип сообщения и текст).
в конце после всех выводов браузер добавить еще один рендер специального шаблона (для блока ошибок) в который передать этот массив. Получится что к вашей странице еще добавится дополнительный блок с отладочной информацией, который уже в шаблоне с помощью css можно как угодно разукрасить.
var dLog []string
dLog = append(dLog, "test message 1")
dLog = append(dLog, "test message 1")
dLog = append(dLog, "test message 1")
...
err = templates["dlog"].ExecuteTemplate(w, "base", dLog)

шаблон
{{ define "base" }}
<hr/>
<div style="color: #FF0000;">
    <h2>Debug log:</h2>
    {{ range . }}
        <p>{{.}}</p>
    {{ end }}
</div>
{{ end }}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы