Logging to files works now

This commit is contained in:
konrad 2019-01-23 22:18:04 +01:00
parent 80f7b884b6
commit e65f289e85
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
5 changed files with 51 additions and 15 deletions

3
.gitignore vendored
View File

@ -12,4 +12,5 @@ Test_*
bin/
secrets
*.deb
debian/
debian/
logs/

View File

@ -35,6 +35,9 @@ var Version = "0.1"
func main() {
// Set logger
log.InitLogger()
// Set Engine
err := models.SetEngine()
if err != nil {

View File

@ -82,6 +82,8 @@ func init() {
viper.SetDefault("log.standard", "stdout")
viper.SetDefault("log.database", false)
viper.SetDefault("log.http", true)
viper.SetDefault("log.echo", false) // Echo has its own logging which usually is unnessecary.
viper.SetDefault("log.path", viper.GetString("service.rootpath")+"/logs")
// Init checking for environment variables
viper.SetEnvPrefix("vikunja")

View File

@ -37,15 +37,38 @@ const Fmt = `%{color}%{time:` + time.RFC3339Nano + `}: %{level}` + "\t" + `▶ %
// Log is the handler for the logger
var Log = logging.MustGetLogger("vikunja")
// Initializes the global log handler
func init() {
// InitLogger initializes the global log handler
func InitLogger() {
if !viper.GetBool("log.enabled") {
return
}
if viper.GetString("log.errors") == "file" || viper.GetString("log.standard") == "file" {
err := os.Mkdir(viper.GetString("log.path"), 0744)
if err != nil && !os.IsExist(err) {
log.Fatal("Could not create log folder: ", err.Error())
}
}
// TODO: work out how to set up the other log stuff
// TODO: Docs for new config options
// We define our two backends
errBackend := logging.NewLogBackend(GetErrorLogWriter(), "", 0)
stdBackend := logging.NewLogBackend(GetLogWriter(), "", 0)
stdWriter, _ := GetLogWriter()
/*defer func() {
if err := stdfile.Close(); err != nil {
log.Fatal(err)
}
}()*/
errWriter, _ := GetErrorLogWriter()
/*defer func() {
if err := errFile.Close(); err != nil {
log.Fatal(err)
}
}()*/
errBackend := logging.NewLogBackend(errWriter, "", 0)
stdBackend := logging.NewLogBackend(stdWriter, "", 0)
// Set the standard backend
stdBackendFormatter := logging.NewBackendFormatter(stdBackend, logging.MustStringFormatter(Fmt+"\n"))
@ -60,20 +83,18 @@ func init() {
logging.SetBackend(stdBackendFormatter, errBackendLeveled)
}
// TODO: Refactor these bot functions (it probably isn't needed to return the file shit)
// GetLogWriter returns the writer to where the normal log goes, depending on the config
func GetLogWriter() (writer io.Writer) {
func GetLogWriter() (writer io.Writer, logfile *os.File) {
switch viper.GetString("log.standard") {
case "file":
f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
logfile, err := os.OpenFile(viper.GetString("log.path")+"/standard.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
writer = f
defer func() {
if err := f.Close(); err != nil {
log.Fatal(err)
}
}()
writer = logfile
break
case "stdout":
default:
writer = os.Stdout
@ -82,9 +103,15 @@ func GetLogWriter() (writer io.Writer) {
}
// GetErrorLogWriter returns the writer to where the error log goes, depending on the config
func GetErrorLogWriter() (writer io.Writer) {
func GetErrorLogWriter() (writer io.Writer, logfile *os.File) {
switch viper.GetString("log.error") {
case "file":
logfile, err := os.OpenFile(viper.GetString("log.path")+"/error.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
writer = logfile
break
case "stdout":
default:
writer = os.Stderr

View File

@ -86,7 +86,10 @@ func NewEcho() *echo.Echo {
e.HideBanner = true
if l, ok := e.Logger.(*elog.Logger); ok {
l.SetLevel(elog.ERROR)
if !viper.GetBool("log.echo") {
l.SetLevel(elog.OFF)
}
l.EnableColor()
l.SetHeader(log.ErrFmt)
}