mirror of
https://github.com/kataras/iris.git
synced 2025-12-23 12:57:05 +00:00
accesslog: add IP in builtin fields, change the format a bit. Default func: remove compression middleware, force-set debug log level, replace the old request logger with the accesslog one, use request id middlewareand keep recovery
This commit is contained in:
@@ -18,9 +18,9 @@ func main() {
|
||||
*/
|
||||
|
||||
ac := accesslog.File("./access.log")
|
||||
ac.AddOutput(os.Stdout)
|
||||
defer ac.Close()
|
||||
|
||||
ac.TimeFormat = "2006-01-02 15:04:05"
|
||||
ac.AddOutput(os.Stdout)
|
||||
|
||||
// Set to false to print errors as one line:
|
||||
// ac.KeepMultiLineError = false
|
||||
|
||||
@@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/kataras/iris/v12/middleware/accesslog"
|
||||
"github.com/kataras/iris/v12/middleware/requestid"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -14,21 +15,23 @@ func main() {
|
||||
|
||||
app := iris.New()
|
||||
ac := accesslog.File("./access.log").AddOutput(app.Logger().Printer)
|
||||
ac.TimeFormat = "2006-01-02 15:04:05"
|
||||
|
||||
// 1. Register a field.
|
||||
ac.AddFields(func(ctx iris.Context, fields *accesslog.Fields) {
|
||||
fields.Set("IP", ctx.RemoteAddr())
|
||||
fields.Set("Request ID", ctx.GetID())
|
||||
})
|
||||
|
||||
// 2. Use Template formatter's `Text` value
|
||||
// to define a log line format.
|
||||
ac.SetFormatter(&accesslog.Template{
|
||||
Text: `{{.Now.Format .TimeFormat}} {{.Path}} {{.Code}} {{.Fields.Get "IP" }}
|
||||
`, /* 2020-09-10 21:38:13 / 200 ::1 */
|
||||
Text: `{{.Now.Format .TimeFormat}} {{.Path}} {{.Code}} {{.IP}} {{.Fields.Get "Request ID" }}
|
||||
`, /* 2020-09-11 09:30:10 / 200 ::1 050a0979-c5e4-4c2b-9f08-cb456628edb1 */
|
||||
})
|
||||
// 3. Register the middleware. That's all.
|
||||
app.UseRouter(ac.Handler)
|
||||
// Register the request id middleware, after the logger, this maps the Context.GetID().
|
||||
// Remember: the accesslog runs the next handlers before itself to provide some fields.
|
||||
app.UseRouter(requestid.New())
|
||||
|
||||
app.Get("/", index)
|
||||
|
||||
@@ -42,7 +45,7 @@ func index(ctx iris.Context) {
|
||||
/* Use a custom *template.Template:
|
||||
|
||||
// 2.1 The log line format:
|
||||
text := `{{.Now.Format .TimeFormat}} {{.Path}} {{.Code}} {{.Fields.Get "IP" }}
|
||||
text := `{{.Now.Format .TimeFormat}} {{.Path}} {{.Code}} {{.IP}} {{.Fields.Get "Request ID" }}
|
||||
`
|
||||
//
|
||||
// 2.2 Parse the template, optionally using custom Template Functions.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
2020-09-08 13:34:42|0s|POST|/read_body||200|324 B|217 B|{"name":"John","email":"example@example.com"}|{"data":{"email":"example@example.com","name":"John"},"message":"OK"}|
|
||||
2020-09-08 13:40:28|0s|POST|/read_body||400||85 B|error(invalid character '\r' in string literal)||
|
||||
2020-09-08 13:41:05|1.0024ms|GET|/|a=1 b=2|200|767 B|251 B||<h1>Hello index</h1>|
|
||||
2020-09-08 13:41:26|0s|GET|/public||404|765 B|83 B|||
|
||||
2020-09-08 13:41:36|0s|GET|/user/kataras|username=kataras|200|771 B|91 B||Hello, kataras!|
|
||||
2020-09-08 13:41:47|0s|GET|/user/kataras|username=kataras a_query_parameter=name|200|774 B|91 B||Hello, kataras!|
|
||||
2020-09-08 20:37:33|0s|GET|/admin|auth=admin:admin|200|608 B|164 B||<h2>Username: admin</h2><h3>Password: admin</h3>|
|
||||
2020-09-09 07:56:00|738.1µs|GET|/session|session_id=23fe763f-c9d5-4d65-9e1a-2cc8d23d1aa3 session_test_key=session_test_value|200|818 B|302 B||OK|
|
||||
2020-09-09 08:36:47|2.0095505s|GET|/fields|job_latency=2s|200|544 B|130 B||OK|
|
||||
2020-09-08 13:34:42|0s|200|POST|/read_body|::1||324 B|217 B|{"name":"John","email":"example@example.com"}|{"data":{"email":"example@example.com","name":"John"},"message":"OK"}|
|
||||
2020-09-08 13:40:28|0s|400|POST|/read_body|::1|||85 B|error(invalid character '\r' in string literal)||
|
||||
2020-09-08 13:41:05|1.0024ms|200|GET|/|a=1 b=2|767 B|251 B||<h1>Hello index</h1>|
|
||||
2020-09-08 13:41:26|0s|404|GET|/public|::1||765 B|83 B|||
|
||||
2020-09-08 13:41:36|0s|200|GET|/user/kataras|::1|username=kataras|771 B|91 B||Hello, kataras!|
|
||||
2020-09-08 13:41:47|0s|200|GET|/user/kataras|::1|username=kataras a_query_parameter=name|774 B|91 B||Hello, kataras!|
|
||||
2020-09-08 20:37:33|0s|200|GET|/admin|::1|auth=admin:admin|608 B|164 B||<h2>Username: admin</h2><h3>Password: admin</h3>|
|
||||
2020-09-09 07:56:00|738.1µs|200|GET|/session|::1|session_id=23fe763f-c9d5-4d65-9e1a-2cc8d23d1aa3 session_test_key=session_test_value|818 B|302 B||OK|
|
||||
2020-09-09 08:36:47|2.0095505s|200|GET|/fields|::1|job_latency=2s|544 B|130 B||OK|
|
||||
|
||||
@@ -26,7 +26,8 @@ func makeAccessLog() *accesslog.AccessLog {
|
||||
// Initialize a new access log middleware.
|
||||
// Accepts an `io.Writer`.
|
||||
ac := accesslog.New(w)
|
||||
ac.TimeFormat = "2006-01-02 15:04:05"
|
||||
defer ac.Close()
|
||||
// ac.TimeFormat = "2006-01-02 15:04:05" // default
|
||||
|
||||
// Example of adding more than one field to the logger.
|
||||
// Here we logging all the session values this request has.
|
||||
@@ -81,7 +82,7 @@ func makeAccessLog() *accesslog.AccessLog {
|
||||
Modify the output format and customize the order
|
||||
with the Template formatter:
|
||||
ac.SetFormatter(&accesslog.Template{
|
||||
Text: "{{.Now.Format .TimeFormat}}|{{.Latency}}|{{.Method}}|{{.Path}}|{{.RequestValuesLine}}|{{.Code}}|{{.BytesReceivedLine}}|{{.BytesSentLine}}|{{.Request}}|{{.Response}}|\n",
|
||||
Text: "{{.Now.Format .TimeFormat}}|{{.Latency}}|{{.Code}}|{{.Method}}|{{.Path}}|{{.IP}}|{{.RequestValuesLine}}|{{.BytesReceivedLine}}|{{.BytesSentLine}}|{{.Request}}|{{.Response}}|\n",
|
||||
// Default ^
|
||||
})
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user