package log
import log "github.com/sirupsen/logrus"
const (
UserIDField = "userId"
OwnerIDField = UserIDField
WorkspaceIDField = "workspaceId"
WorkspaceInstanceIDField = "instanceId"
ProjectIDField = "projectId"
TeamIDField = "teamId"
OrganizationIDField = "orgId"
ServiceContextField = "serviceContext"
PersonalAccessTokenIDField = "patId"
OIDCClientConfigIDField = "oidcClientConfigId"
)
func OWI(owner, workspace, instance string) log.Fields {
return log.Fields{
OwnerIDField: owner,
WorkspaceIDField: workspace,
WorkspaceInstanceIDField: instance,
}
}
func LogContext(ownerID, workspaceID, instanceID, projectID, orgID string) log.Fields {
return Compose(
WorkspaceOwner(ownerID),
WorkspaceID(workspaceID),
WorkspaceInstanceID(instanceID),
ProjectID(projectID),
OrganizationID(orgID),
)
}
func WorkspaceOwner(owner string) log.Fields {
return String(OwnerIDField, owner)
}
func WorkspaceID(workspaceID string) log.Fields {
return String(WorkspaceIDField, workspaceID)
}
func WorkspaceInstanceID(instanceID string) log.Fields {
return String(WorkspaceInstanceIDField, instanceID)
}
func ProjectID(projectID string) log.Fields {
return String(ProjectIDField, projectID)
}
func OrganizationID(orgID string) log.Fields {
return Compose(
String(TeamIDField, orgID),
String(OrganizationIDField, orgID),
)
}
func PersonalAccessTokenID(patID string) log.Fields {
return String(PersonalAccessTokenIDField, patID)
}
func OIDCClientConfigID(id string) log.Fields {
return String(OIDCClientConfigIDField, id)
}
func UserID(userID string) log.Fields {
return String(UserIDField, userID)
}
func Compose(fields ...log.Fields) log.Fields {
res := log.Fields{}
for _, f := range fields {
for key, val := range f {
res[key] = val
}
}
return res
}
type serviceContext struct {
Service string `json:"service"`
Version string `json:"version"`
}
func ServiceContext(service, version string) log.Fields {
return log.Fields{
ServiceContextField: serviceContext{service, version},
}
}
func String(key, value string) log.Fields {
return log.Fields{key: value}
}