package accountserver import ( "context" "encoding/json" "log" ) type auditLogger interface { Log(context.Context, ResourceID, string) } type auditLogEntry struct { User string `json:"user,omitempty"` By string `json:"by"` Message string `json:"message"` Comment string `json:"comment,omitempty"` ResourceName string `json:"resource_name,omitempty"` ResourceType string `json:"resource_type,omitempty"` } type syslogAuditLogger struct{} func (l *syslogAuditLogger) Log(ctx context.Context, resourceID ResourceID, what string) { e := auditLogEntry{ User: userFromContext(ctx), By: authUserFromContext(ctx), Message: what, Comment: commentFromContext(ctx), } if !resourceID.Empty() { e.ResourceName = resourceID.Name() e.ResourceType = resourceID.Type() if u := resourceID.User(); u != "" { e.User = u } } data, _ := json.Marshal(&e) log.Printf("@cee:%s", data) }