package logger

import (
	"log/syslog"
	"os"
	"strconv"

	"github.com/sirupsen/logrus"
	logrusSyslog "github.com/sirupsen/logrus/hooks/syslog"
)

var Log logrus.Ext1FieldLogger

func New(appName string, debug, trace bool) {
	l := logrus.New()
	switch {
	case trace:
		l.SetLevel(logrus.TraceLevel)
		l.SetReportCaller(true)
	case debug:
		l.SetLevel(logrus.DebugLevel)
	default:
		l.SetLevel(logrus.InfoLevel)
	}

	hook, err := logrusSyslog.NewSyslogHook("udp", "syslog.nsi.rackspace.com:514", syslog.LOG_INFO, appName)
	if err != nil {
		l.Errorf("Unable to connect to syslog daemon: %v", err)
	} else {
		l.AddHook(hook)
	}

	Log = l
}

func init() {
	l := logrus.New()
	level := logrus.InfoLevel
	debug, ok := os.LookupEnv("DEBUG")
	if ok {
		d, err := strconv.ParseBool(debug)
		if err == nil {
			if d {
				level = logrus.DebugLevel
			}
		}
	}
	l.SetLevel(level)
	Log = l
}
