Sha256: 777ab46f059e14ed1b80bbb2d52fab334b0f2a30ad53413ec572cb25c6bf9266

Contents?: true

Size: 1.26 KB

Versions: 24

Compression:

Stored size: 1.26 KB

Contents

package betterlog

import (
	"fmt"
	"log"
	"net/http"
	"os"

	"github.com/labstack/echo"
)

type Health struct {
	PORT int
}

type Response struct {
	Hostname string `json:"hostname"`
	Healthy  bool   `json:"healthy"`
	Error    string `json:"error,omitempty"`
	Message  string `json:"message,omitempty"`
}

func determineHostname() string {
	hostname, err := os.Hostname()
	if err != nil {
		hostname = "unknown"
	}
	return hostname
}

func (health Health) Check() error {
	return nil
}

func (health Health) ZPage(next echo.HandlerFunc) echo.HandlerFunc {
	hostname := determineHostname()
	return func(c echo.Context) error {
		if c.Path() == "/healthz" {
			if err := health.Check(); err == nil {
				return c.JSON(
					http.StatusOK,
					Response{
						Hostname: hostname,
						Healthy:  true,
					},
				)
			} else {
				log.Printf("error: %v", err)
				return c.JSON(
					http.StatusInternalServerError,
					Response{
						Hostname: hostname,
						Healthy:  false,
						Error:    err.Error(),
						Message:  "problem detected",
					},
				)
			}
		} else {
			return next(c)
		}
	}
}

func StartHealthzEcho(health Health) {
	e := echo.New()

	e.Use(health.ZPage)
	log.Printf("Starting :%d/healthz", health.PORT)
	e.Logger.Fatal(e.Start(fmt.Sprintf(":%d", health.PORT)))
}

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
betterlog-0.18.0 betterlog/healthz.go
betterlog-0.15.2 betterlog/healthz.go
betterlog-0.15.1 betterlog/healthz.go
betterlog-0.15.0 betterlog/healthz.go
betterlog-0.14.1 betterlog/healthz.go
betterlog-0.14.0 betterlog/healthz.go
betterlog-0.13.1 betterlog/healthz.go
betterlog-0.13.0 betterlog/healthz.go
betterlog-0.12.2 betterlog/healthz.go
betterlog-0.12.1 betterlog/healthz.go
betterlog-0.12.0 betterlog/healthz.go
betterlog-0.11.0 betterlog/healthz.go
betterlog-0.10.0 betterlog/healthz.go
betterlog-0.9.0 betterlog/healthz.go
betterlog-0.8.1 betterlog/healthz.go
betterlog-0.8.0 betterlog/healthz.go
betterlog-0.7.2 betterlog/healthz.go
betterlog-0.7.1 betterlog/healthz.go
betterlog-0.7.0 betterlog/healthz.go
betterlog-0.6.1 betterlog/healthz.go