logboek

package module
v0.0.0-...-3244585 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 29, 2024 License: EUPL-1.2 Imports: 13 Imported by: 0

README

Logboek Go library

Softwarebibliotheek om eenvoudig dataverwerkingen te loggen.

Installatie

go get github.com/MinBZK/logboek-dataverwerkingen-logboek/libs/logboek-go

Gebruik

package main

import (
    "context"
    "fmt"

    "github.com/MinBZK/logboek-dataverwerkingen-logboek/libs/logboek-go"
)

func main() {
    // Adres van de logboekserver
    logboekEndpoint := "localhost:9000"

    // Gebruik gRPC om de verwerkingshandelingen naar de logboekserver te versturen
    handler, _ := logboek.NewGRPCProcessingOperationHandler(context.Background(), logboekEndpoint)

    // Met een operator worden nieuwe verwerkingen gestart
    operator := logboek.NewProcessingOperator(handler)

    ctx := context.Background()
    // Start een nieuwe verwerking
    _, op := operator.StartProcessing(ctx, "een-verwerking")

    fmt.Println("Dataverwerking")

    // Stop de verwerking
    op.End()

    // De handler zal de verwerkingshandeling versturen naar de logboekserver
}
Status

Een verwerkingshandeling heeft uitkomst welke als een status wordt opgegeven. Standaard is de status logboek.StatusCodeUnknown.

_, op := operator.StartProcessing(ctx, "een-verwerking")

// De verwerking is successvol
op.SetStatus(logboek.StatusCodeOK)

// De verwerking is niet geslaagd
op.SetStatus(logboek.StatusCodeError)
Attributen

Bij een verwerkingshandeling kunnen ook attributen opgegeven worden.

import (
    "github.com/MinBZK/logboek-dataverwerkingen-logboek/libs/logboek-go"
    "github.com/MinBZK/logboek-dataverwerkingen-logboek/libs/logboek-go/attribute"
)

_, op := operator.StartProcessing(context.Background(), "een-verwerking")
op.SetAttributes(attribute.New("naam", "waarde"), attribute.New("dossier-nummer", "42"))

Om bij een verwerkingshandelingen een relatie te leggen naar een verwerkingensactiviteit uit een Register van de verwerkingsactiviteiten is een speciaal attribuut beschikbaar.

import (
    "github.com/MinBZK/logboek-dataverwerkingen-logboek/libs/logboek-go"
    "github.com/MinBZK/logboek-dataverwerkingen-logboek/libs/logboek-go/attribute"
)

_, op := operator.StartProcessing(context.Background(), "een-verwerking")
op.SetAttributes(attribute.New(attribute.ProcessingActivityIDKey, "<id-uit-het-rva>"))
Propagation

Propagation van de verwerkingshandeling naar een extern systeem. Dit maakt gebruik van de traceparent-header.

import (
    "context"
    "net/http"

    "github.com/MinBZK/logboek-dataverwerkingen-logboek/libs/logboek-go"
    logboek_http "github.com/MinBZK/logboek-dataverwerkingen-logboek/libs/logboek-go/http"
)

func main() {
    ctx, _ := operator.StartProcessing(context.Background(), "een-verwerking")

    client := http.Client{
        // Gebruik een logboek transport om de `traceparent` header te vullen met de huidige verwerkingshandeling
        Transport: logboek_http.NewTransport(http.DefaultTransport),
    }

    req, _ := http.NewRequestWithContext(ctx, "GET", "https://example.com/", nil)
    client.Do(req)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ContextWithProcessingOperation

func ContextWithProcessingOperation(ctx context.Context, op *ProcessingOperation) context.Context

Types

type GRPCProcessingOperationHandler

type GRPCProcessingOperationHandler struct {
	// contains filtered or unexported fields
}

func NewGRPCProcessingOperationHandler

func NewGRPCProcessingOperationHandler(ctx context.Context, endpoint string) (*GRPCProcessingOperationHandler, error)

func (*GRPCProcessingOperationHandler) OnEnd

type OperationID

type OperationID [8]byte

func OperationIDFromBytes

func OperationIDFromBytes(data []byte) (OperationID, error)

func (OperationID) Empty

func (id OperationID) Empty() bool

func (OperationID) String

func (id OperationID) String() string

type ProcessingContext

type ProcessingContext struct {
	// contains filtered or unexported fields
}

func (ProcessingContext) IsValid

func (p ProcessingContext) IsValid() bool

func (ProcessingContext) OperationID

func (p ProcessingContext) OperationID() OperationID

func (ProcessingContext) TraceID

func (p ProcessingContext) TraceID() TraceID

type ProcessingOperation

type ProcessingOperation struct {
	// contains filtered or unexported fields
}

func ProcessingOperationFromContext

func ProcessingOperationFromContext(ctx context.Context) *ProcessingOperation

func (*ProcessingOperation) End

func (op *ProcessingOperation) End()

func (*ProcessingOperation) GetParentProcessingContext

func (op *ProcessingOperation) GetParentProcessingContext() ProcessingContext

func (*ProcessingOperation) GetProcessingContext

func (op *ProcessingOperation) GetProcessingContext() ProcessingContext

func (*ProcessingOperation) SetAttributes

func (op *ProcessingOperation) SetAttributes(attrs ...attribute.Attribute)

func (*ProcessingOperation) SetStatus

func (op *ProcessingOperation) SetStatus(c StatusCode)

func (*ProcessingOperation) Start

func (op *ProcessingOperation) Start()

type ProcessingOperationHandler

type ProcessingOperationHandler interface {
	OnEnd(op *ProcessingOperation)
}

type ProcessingOperator

type ProcessingOperator struct {
	// contains filtered or unexported fields
}

func NewProcessingOperator

func NewProcessingOperator(resource Resource, handler ProcessingOperationHandler) *ProcessingOperator

func (*ProcessingOperator) StartProcessing

func (o *ProcessingOperator) StartProcessing(ctx context.Context, processingName string) (context.Context, *ProcessingOperation)

type Resource

type Resource struct {
	Name    string
	Version string
}

type StatusCode

type StatusCode int
const (
	StatusCodeUnknown StatusCode = iota
	StatusCodeOK
	StatusCodeError
)

type TraceContextPropegator

type TraceContextPropegator struct{}

func (TraceContextPropegator) Extract

func (TraceContextPropegator) Inject

type TraceID

type TraceID [16]byte

func TraceIDFromBytes

func TraceIDFromBytes(data []byte) (TraceID, error)

func (TraceID) Empty

func (id TraceID) Empty() bool

func (TraceID) String

func (id TraceID) String() string

Directories

Path Synopsis
proto

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL