| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package porter_app
- import (
- "time"
- "github.com/porter-dev/porter/api/types"
- )
- // StructuredLog represents a single log line with all necessary fields required by Porter API clients
- type StructuredLog struct {
- Timestamp time.Time `json:"timestamp"`
- Line string `json:"line"`
- OutputStream string `json:"output_stream"`
- ServiceName string `json:"service_name"`
- AppRevisionID string `json:"app_revision_id"`
- DeploymentTargetID string `json:"deployment_target_id"`
- AppInstanceID string `json:"app_instance_id"`
- JobName string `json:"job_name,omitempty"`
- JobRunID string `json:"job_run_id,omitempty"`
- }
- const (
- lokiLabel_PorterAppName = "porter_run_app_name"
- lokiLabel_PorterAppID = "porter_run_app_id"
- lokiLabel_PorterServiceName = "porter_run_service_name"
- lokiLabel_PorterAppRevisionID = "porter_run_app_revision_id"
- lokiLabel_DeploymentTargetId = "porter_run_deployment_target_id"
- lokiLabel_AppInstanceID = "porter_run_app_instance_id"
- lokiLabel_JobRunName = "job_name"
- lokiLabel_ControllerUID = "controller_uid"
- )
- // AgentLogToStructuredLog converts a set of raw logs from the agent to structured logs
- func AgentLogToStructuredLog(rawLogs []types.LogLine) []StructuredLog {
- var logs []StructuredLog
- for _, log := range rawLogs {
- structuredLog := StructuredLog{
- Line: log.Line,
- OutputStream: log.Metadata.OutputStream,
- ServiceName: log.Metadata.RawLabels[lokiLabel_PorterServiceName],
- AppRevisionID: log.Metadata.RawLabels[lokiLabel_PorterAppRevisionID],
- DeploymentTargetID: log.Metadata.RawLabels[lokiLabel_DeploymentTargetId],
- JobName: log.Metadata.RawLabels[lokiLabel_JobRunName],
- JobRunID: log.Metadata.RawLabels[lokiLabel_ControllerUID],
- AppInstanceID: log.Metadata.RawLabels[lokiLabel_AppInstanceID],
- }
- if log.Timestamp != nil {
- structuredLog.Timestamp = *log.Timestamp
- }
- logs = append(logs, structuredLog)
- }
- return logs
- }
|