Skip to content

Commit

Permalink
update defaultformat
Browse files Browse the repository at this point in the history
  • Loading branch information
Skyenought committed Aug 24, 2023
1 parent ef9366c commit 6fc4ca5
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 26 deletions.
30 changes: 15 additions & 15 deletions docs/api/middleware/logger.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,27 +92,27 @@ app.Use(logger.New(logger.Config{

### Config

| Property | Type | Description | Default |
|:-----------------|:---------------------------|:---------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------|
| Next | `func(*fiber.Ctx) bool` | Next defines a function to skip this middleware when returned true. | `nil` |
| Done | `func(*fiber.Ctx, []byte)` | Done is a function that is called after the log string for a request is written to Output, and pass the log string as parameter. | `nil` |
| CustomTags | `map[string]LogFunc` | tagFunctions defines the custom tag action. | `map[string]LogFunc` |
| Format | `string` | Format defines the logging tags. | `[${time}] ${status} - ${latency} ${method} ${path}\n` |
| TimeFormat | `string` | TimeFormat defines the time format for log timestamps. | `15:04:05` |
| TimeZone | `string` | TimeZone can be specified, such as "UTC" and "America/New_York" and "Asia/Chongqing", etc | `"Local"` |
| TimeInterval | `time.Duration` | TimeInterval is the delay before the timestamp is updated. | `500 * time.Millisecond` |
| Output | `io.Writer` | Output is a writer where logs are written. | `os.Stdout` |
| DisableColors | `bool` | DisableColors defines if the logs output should be colorized. | `false` |
| enableColors | `bool` | Internal field for enabling colors in the log output. (This is not a user-configurable field) | - |
| enableLatency | `bool` | Internal field for enabling latency measurement in logs. (This is not a user-configurable field) | - |
| timeZoneLocation | `*time.Location` | Internal field for the time zone location. (This is not a user-configurable field) | - |
| Property | Type | Description | Default |
| :--------------- | :------------------------- | :----------------------------------------------------------- | :----------------------------------------------------------- |
| Next | `func(*fiber.Ctx) bool` | Next defines a function to skip this middleware when returned true. | `nil` |
| Done | `func(*fiber.Ctx, []byte)` | Done is a function that is called after the log string for a request is written to Output, and pass the log string as parameter. | `nil` |
| CustomTags | `map[string]LogFunc` | tagFunctions defines the custom tag action. | `map[string]LogFunc` |
| Format | `string` | Format defines the logging tags. | `${time} | ${status} | ${latency} | ${method} | ${path} | ${error}\n` |
| TimeFormat | `string` | TimeFormat defines the time format for log timestamps. | `15:04:05` |
| TimeZone | `string` | TimeZone can be specified, such as "UTC" and "America/New_York" and "Asia/Chongqing", etc | `"Local"` |
| TimeInterval | `time.Duration` | TimeInterval is the delay before the timestamp is updated. | `500 * time.Millisecond` |
| Output | `io.Writer` | Output is a writer where logs are written. | `os.Stdout` |
| DisableColors | `bool` | DisableColors defines if the logs output should be colorized. | `false` |
| enableColors | `bool` | Internal field for enabling colors in the log output. (This is not a user-configurable field) | - |
| enableLatency | `bool` | Internal field for enabling latency measurement in logs. (This is not a user-configurable field) | - |
| timeZoneLocation | `*time.Location` | Internal field for the time zone location. (This is not a user-configurable field) | - |

## Default Config
```go
var ConfigDefault = Config{
Next: nil,
Done: nil,
Format: "[${time}] ${status} - ${latency} ${method} ${path}\n",
Format: "${time} | ${status} | ${latency} | ${method} | ${path} | ${error}\n",
TimeFormat: "15:04:05",
TimeZone: "Local",
TimeInterval: 500 * time.Millisecond,
Expand Down
4 changes: 2 additions & 2 deletions middleware/logger/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ type Config struct {

// Format defines the logging tags
//
// Optional. Default: [${time}] ${status} - ${latency} ${method} ${path}\n
// Optional. Default: ${time} | ${status} | ${latency} | ${method} | ${path} | ${error}\n
Format string

// TimeFormat https://programming.guide/go/format-parse-string-time-date-example.html
Expand Down Expand Up @@ -86,7 +86,7 @@ type LogFunc func(output Buffer, c *fiber.Ctx, data *Data, extraParam string) (i
var ConfigDefault = Config{
Next: nil,
Done: nil,
Format: "[${time}] ${status} - ${latency} ${method} ${path}\n",
Format: "${time} | ${status} | ${latency} | ${method} | ${path} | ${error}\n",
TimeFormat: "15:04:05",
TimeZone: "Local",
TimeInterval: 500 * time.Millisecond,
Expand Down
25 changes: 16 additions & 9 deletions middleware/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,21 +150,28 @@ func New(config ...Config) fiber.Handler {
}

// Construct the log format
logFormat := "%s |%s %3d %s| %7v | %15s |%s %-7s %s| %-" + errPaddingStr + "s %s\n"
if !cfg.enableColors {
logFormat = "%s | %3d | %7v | %15s | %-7s | %-" + errPaddingStr + "s %s\n"
var (
logFormat = "%s |%s %3d %s| %7v | %15s |%s %-7s %s| %-" + errPaddingStr + "s %s\n"

methodColorFmt string
statusCodeFmt string
colorReset string
)
if cfg.enableColors {
colorReset = colors.Reset
statusCodeFmt = statusColor(c.Response().StatusCode(), colors)
methodColorFmt = methodColor(c.Method(), colors)
}

// Write log entry to buffer
_, _ = buf.WriteString(fmt.Sprintf(logFormat,
_, _ = buf.WriteString(fmt.Sprintf( //nolint:errcheck // This will never fail
logFormat,
timestamp.Load().(string),
statusColor(c.Response().StatusCode(), colors), c.Response().StatusCode(), colors.Reset,
statusCodeFmt, c.Response().StatusCode(), colorReset,
data.Stop.Sub(data.Start).Round(time.Millisecond),
c.IP(),
methodColor(c.Method(), colors), c.Method(), colors.Reset,
methodColorFmt, c.Method(), colorReset,
c.Path(),
formatErr,
)) //nolint:errcheck // This will never fail
))

// Write buffer to output
_, _ = cfg.Output.Write(buf.Bytes()) //nolint:errcheck // This will never fail
Expand Down
5 changes: 5 additions & 0 deletions middleware/logger/tags.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,11 @@ func createTagMap(cfg *Config) map[string]LogFunc {
},
TagError: func(output Buffer, c *fiber.Ctx, data *Data, extraParam string) (int, error) {
if data.ChainErr != nil {
if cfg.enableColors {
colors := c.App().Config().ColorScheme
return output.WriteString(fmt.Sprintf("%s %s %s", colors.Red, data.ChainErr.Error(), colors.Reset))
}

return output.WriteString(data.ChainErr.Error())
}
return output.WriteString("-")
Expand Down

0 comments on commit 6fc4ca5

Please sign in to comment.