[TASK] add log

This commit is contained in:
Martin Geno 2017-05-17 14:58:28 +02:00
parent ea2b3e03f3
commit 44f9087010
No known key found for this signature in database
GPG Key ID: F0D39A37E925E941
2 changed files with 54 additions and 0 deletions

32
log/main.go Normal file
View File

@ -0,0 +1,32 @@
// Package that provides the functionality to start und initialize the logger
package log
import (
"log"
"net/http"
logger "github.com/Sirupsen/logrus"
)
// Current logger with it's configuration
var Log *logger.Logger
// Function to initiate a new logger
func init() {
Log = logger.New()
// Enable fallback, if core logger
log.SetOutput(Log.Writer())
}
// Function to add the information of a http request to the log
func HTTP(r *http.Request) *logger.Entry {
ip := r.Header.Get("X-Forwarded-For")
if len(ip) <= 1 {
ip = r.RemoteAddr
}
return Log.WithFields(logger.Fields{
"remote": ip,
"method": r.Method,
"url": r.URL.RequestURI(),
})
}

22
log/main_test.go Normal file
View File

@ -0,0 +1,22 @@
// Package that provides the functionality to start und initialize the logger
package log
import (
"net/http"
"testing"
"github.com/stretchr/testify/assert"
)
// Function to test the logging
func TestLog(t *testing.T) {
assertion := assert.New(t)
req, _ := http.NewRequest("GET", "https://google.com/lola/duda?q=wasd", nil)
log := HTTP(req)
_, ok := log.Data["remote"]
assertion.NotNil(ok, "remote address not set in logger")
assertion.Equal("GET", log.Data["method"], "method not set in logger")
assertion.Equal("/lola/duda?q=wasd", log.Data["url"], "path not set in logger")
}