Skip to content

Commit

Permalink
simplify logger time and avoid possible crashes (minio#13986)
Browse files Browse the repository at this point in the history
time.Format() is not necessary prematurely for JSON
marshalling, since JSON marshalling indeed defaults
to RFC3339Nano.

This also ensures the 'time' is remembered until its
logged and it is the same time when the 'caller'
invoked 'log' functions.
  • Loading branch information
harshavardhana authored Dec 23, 2021
1 parent 5a96cbb commit 9ad6012
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 31 deletions.
2 changes: 1 addition & 1 deletion internal/logger/audit.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ func GetAuditEntry(ctx context.Context) *audit.Entry {
r = &audit.Entry{
Version: audit.Version,
DeploymentID: globalDeploymentID,
Time: time.Now().UTC().Format(time.RFC3339Nano),
Time: time.Now().UTC(),
}
SetAuditEntry(ctx, r)
return r
Expand Down
6 changes: 3 additions & 3 deletions internal/logger/console.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ func (f fatalMsg) json(msg string, args ...interface{}) {
logJSON, err := json.Marshal(&log.Entry{
Level: FatalLvl.String(),
Message: message,
Time: time.Now().UTC().Format(time.RFC3339Nano),
Time: time.Now().UTC(),
Trace: &log.Trace{Message: message, Source: []string{getSource(6)}},
})
if err != nil {
Expand Down Expand Up @@ -159,7 +159,7 @@ func (i infoMsg) json(msg string, args ...interface{}) {
logJSON, err := json.Marshal(&log.Entry{
Level: InformationLvl.String(),
Message: message,
Time: time.Now().UTC().Format(time.RFC3339Nano),
Time: time.Now().UTC(),
})
if err != nil {
panic(err)
Expand Down Expand Up @@ -192,7 +192,7 @@ func (i errorMsg) json(msg string, args ...interface{}) {
logJSON, err := json.Marshal(&log.Entry{
Level: ErrorLvl.String(),
Message: message,
Time: time.Now().UTC().Format(time.RFC3339Nano),
Time: time.Now().UTC(),
Trace: &log.Trace{Message: message, Source: []string{getSource(6)}},
})
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion internal/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ func logIf(ctx context.Context, err error, errKind ...interface{}) {
Host: req.Host,
RequestID: req.RequestID,
UserAgent: req.UserAgent,
Time: time.Now().UTC().Format(time.RFC3339Nano),
Time: time.Now().UTC(),
API: &log.API{
Name: API,
Args: &log.Args{
Expand Down
10 changes: 5 additions & 5 deletions internal/logger/message/audit/entry.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ const Version = "1"

// Entry - audit entry logs.
type Entry struct {
Version string `json:"version"`
DeploymentID string `json:"deploymentid,omitempty"`
Time string `json:"time"`
Trigger string `json:"trigger"`
Version string `json:"version"`
DeploymentID string `json:"deploymentid,omitempty"`
Time time.Time `json:"time"`
Trigger string `json:"trigger"`
API struct {
Name string `json:"name,omitempty"`
Bucket string `json:"bucket,omitempty"`
Expand All @@ -61,7 +61,7 @@ func NewEntry(deploymentID string) Entry {
return Entry{
Version: Version,
DeploymentID: deploymentID,
Time: time.Now().UTC().Format(time.RFC3339Nano),
Time: time.Now().UTC(),
}
}

Expand Down
27 changes: 15 additions & 12 deletions internal/logger/message/log/entry.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@

package log

import "strings"
import (
"strings"
"time"
)

// Args - defines the arguments for the API.
type Args struct {
Expand All @@ -41,17 +44,17 @@ type API struct {

// Entry - defines fields and values of each log entry.
type Entry struct {
DeploymentID string `json:"deploymentid,omitempty"`
Level string `json:"level"`
LogKind string `json:"errKind"`
Time string `json:"time"`
API *API `json:"api,omitempty"`
RemoteHost string `json:"remotehost,omitempty"`
Host string `json:"host,omitempty"`
RequestID string `json:"requestID,omitempty"`
UserAgent string `json:"userAgent,omitempty"`
Message string `json:"message,omitempty"`
Trace *Trace `json:"error,omitempty"`
DeploymentID string `json:"deploymentid,omitempty"`
Level string `json:"level"`
LogKind string `json:"errKind"`
Time time.Time `json:"time"`
API *API `json:"api,omitempty"`
RemoteHost string `json:"remotehost,omitempty"`
Host string `json:"host,omitempty"`
RequestID string `json:"requestID,omitempty"`
UserAgent string `json:"userAgent,omitempty"`
Message string `json:"message,omitempty"`
Trace *Trace `json:"error,omitempty"`
}

// Info holds console log messages
Expand Down
22 changes: 13 additions & 9 deletions internal/logger/target/console/console.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import (
"encoding/json"
"fmt"
"strings"
"time"

"github.com/minio/minio/internal/color"
"github.com/minio/minio/internal/logger"
Expand Down Expand Up @@ -81,15 +80,20 @@ func (c *Target) Send(e interface{}, logKind string) error {
}
}

apiString := "API: " + entry.API.Name + "("
if entry.API.Args != nil && entry.API.Args.Bucket != "" {
apiString = apiString + "bucket=" + entry.API.Args.Bucket
}
if entry.API.Args != nil && entry.API.Args.Object != "" {
apiString = apiString + ", object=" + entry.API.Args.Object
var apiString string
if entry.API != nil {
apiString = "API: " + entry.API.Name + "("
if entry.API.Args != nil && entry.API.Args.Bucket != "" {
apiString = apiString + "bucket=" + entry.API.Args.Bucket
}
if entry.API.Args != nil && entry.API.Args.Object != "" {
apiString = apiString + ", object=" + entry.API.Args.Object
}
apiString += ")"
} else {
apiString = "INTERNAL"
}
apiString += ")"
timeString := "Time: " + time.Now().Format(logger.TimeFormat)
timeString := "Time: " + entry.Time.Format(logger.TimeFormat)

var deploymentID string
if entry.DeploymentID != "" {
Expand Down

0 comments on commit 9ad6012

Please sign in to comment.