package log

import (
	"encoding/json"
	"fmt"
	"io"
)

type jsonLogger struct {
	out         io.Writer
	logStarted  bool
	logFinished bool
}

func (j *jsonLogger) Write(l Level, msg Msg) {
	if j.logStarted {
		fmt.Fprintln(j.out, ",")
	} else {
		fmt.Fprintln(j.out, "[")
	}
	j.logStarted = true
	msg["level"] = l.Name
	b, _ := json.MarshalIndent(msg, "  ", "  ")
	fmt.Print("  " + string(b))
}
func (j *jsonLogger) Finish() {
	if j.logStarted {
		fmt.Fprintln(j.out, "\n]")
	} else if !j.logFinished {
		fmt.Fprintln(j.out, "[]")
	}
	j.logFinished = true
}