logging

package
v2.0.0-beta.4 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2024 License: Apache-2.0 Imports: 37 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MagicArgv1 is the magic argv1 for the containerd runtime v2 logging plugin mode.
	MagicArgv1 = "_NERDCTL_INTERNAL_LOGGING"
	LogPath    = "log-path"
	MaxSize    = "max-size"
	MaxFile    = "max-file"
	Tag        = "tag"
)

Variables

View Source
var FluentdLogOpts = []string{
	fluentAddress,
	fluentdAsync,
	fluentdBufferLimit,
	fluentdRetryWait,
	fluentdMaxRetries,
	fluentdSubSecondPrecision,
	fluentdAsyncReconnectInterval,
	fluentRequestAck,
	Tag,
}
View Source
var JSONDriverLogOpts = []string{
	LogPath,
	MaxSize,
	MaxFile,
}
View Source
var JournalDriverLogOpts = []string{
	Tag,
}

Functions

func Drivers

func Drivers() []string

func FetchLogs

func FetchLogs(stdout, stderr io.Writer, journalctlArgs []string, stopChannel chan os.Signal) error

Exec's `journalctl` with the provided arguments and hooks it up to the given stdout/stderr streams.

func FluentdLogOptsValidate

func FluentdLogOptsValidate(logOptMap map[string]string) error

func JSONFileLogOptsValidate

func JSONFileLogOptsValidate(logOptMap map[string]string) error

func JournalLogOptsValidate

func JournalLogOptsValidate(logOptMap map[string]string) error

func LogConfigFilePath

func LogConfigFilePath(dataStore, ns, id string) string

LogConfigFilePath returns the path of log-config.json

func Main

func Main(argv2 string) error

Main is the entrypoint for the containerd runtime v2 logging plugin mode.

Should be called only if argv1 == MagicArgv1.

func ParseCRILog

func ParseCRILog(log []byte, msg *logMessage) error

ParseCRILog parses logs in CRI log format. CRI Log format example:

2016-10-06T00:17:09.669794202Z stdout P log content 1
2016-10-06T00:17:09.669794203Z stderr F log content 2

func ReadLogs

func ReadLogs(opts *LogViewOptions, stdout, stderr io.Writer, stopChannel chan os.Signal) error

ReadLogs read the container log and redirect into stdout and stderr. Note that containerID is only needed when following the log, or else just pass in empty string "".

func RegisterDriver

func RegisterDriver(name string, f DriverFactory, validateFunc LogOptsValidateFunc)

func RegisterLogViewer

func RegisterLogViewer(driverName string, lvfn LogViewerFunc)

Registers a LogViewerFunc for the

func SyslogOptsValidate

func SyslogOptsValidate(logOptMap map[string]string) error

func ValidateFluentdLoggerOpts

func ValidateFluentdLoggerOpts(config map[string]string) error

func ValidateLogOpts

func ValidateLogOpts(logDriver string, logOpts map[string]string) error

Types

type ContainerLogViewer

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

Implements functionality for loading the logging configuration and fetching/outputting container logs based on its internal LogViewOptions.

func InitContainerLogViewer

func InitContainerLogViewer(containerLabels map[string]string, lvopts LogViewOptions, stopChannel chan os.Signal, experimental bool) (contlv *ContainerLogViewer, err error)

Validates the given LogViewOptions, loads the logging config for the given container and returns a ContainerLogViewer.

func (*ContainerLogViewer) PrintLogsTo

func (lv *ContainerLogViewer) PrintLogsTo(stdout, stderr io.Writer) error

Prints all logs for this LogViewer's containers to the provided io.Writers.

type Driver

type Driver interface {
	Init(dataStore, ns, id string) error
	PreProcess(dataStore string, config *logging.Config) error
	Process(stdout <-chan string, stderr <-chan string) error
	PostProcess() error
}

func GetDriver

func GetDriver(name string, opts map[string]string) (Driver, error)

type DriverFactory

type DriverFactory func(map[string]string) (Driver, error)

type FluentdLogger

type FluentdLogger struct {
	Opts map[string]string
	// contains filtered or unexported fields
}

func (*FluentdLogger) Init

func (f *FluentdLogger) Init(dataStore, ns, id string) error

func (*FluentdLogger) PostProcess

func (f *FluentdLogger) PostProcess() error

func (*FluentdLogger) PreProcess

func (f *FluentdLogger) PreProcess(_ string, config *logging.Config) error

func (*FluentdLogger) Process

func (f *FluentdLogger) Process(stdout <-chan string, stderr <-chan string) error

type JSONLogger

type JSONLogger struct {
	Opts map[string]string
	// contains filtered or unexported fields
}

func (*JSONLogger) Init

func (jsonLogger *JSONLogger) Init(dataStore, ns, id string) error

func (*JSONLogger) PostProcess

func (jsonLogger *JSONLogger) PostProcess() error

func (*JSONLogger) PreProcess

func (jsonLogger *JSONLogger) PreProcess(dataStore string, config *logging.Config) error

func (*JSONLogger) Process

func (jsonLogger *JSONLogger) Process(stdout <-chan string, stderr <-chan string) error

type JournaldLogger

type JournaldLogger struct {
	Opts map[string]string
	// contains filtered or unexported fields
}

func (*JournaldLogger) Init

func (journaldLogger *JournaldLogger) Init(dataStore, ns, id string) error

func (*JournaldLogger) PostProcess

func (journaldLogger *JournaldLogger) PostProcess() error

func (*JournaldLogger) PreProcess

func (journaldLogger *JournaldLogger) PreProcess(dataStore string, config *logging.Config) error

func (*JournaldLogger) Process

func (journaldLogger *JournaldLogger) Process(stdout <-chan string, stderr <-chan string) error

type LogConfig

type LogConfig struct {
	Driver string            `json:"driver"`
	Opts   map[string]string `json:"opts,omitempty"`
	LogURI string            `json:"-"`
}

LogConfig is marshalled as "log-config.json"

func LoadLogConfig

func LoadLogConfig(dataStore, ns, id string) (LogConfig, error)

LoadLogConfig loads the log-config.json for the afferrent container store

type LogOptsValidateFunc

type LogOptsValidateFunc func(logOptMap map[string]string) error

type LogStreamType

type LogStreamType string

LogStreamType is the type of the stream in CRI container log.

const (
	// Stdout is the stream type for stdout.
	Stdout LogStreamType = "stdout"
	// Stderr is the stream type for stderr.
	Stderr LogStreamType = "stderr"
)

type LogTag

type LogTag string

LogTag is the tag of a log line in CRI container log. Currently defined log tags: * First tag: Partial/Full - P/F. The field in the container log format can be extended to include multiple tags by using a delimiter, but changes should be rare. If it becomes clear that better extensibility is desired, a more extensible format (e.g., json) should be adopted as a replacement and/or addition.

const (
	// LogTagPartial means the line is part of multiple lines.
	LogTagPartial LogTag = "P"
	// LogTagFull means the line is a single full line or the end of multiple lines.
	LogTagFull LogTag = "F"
	// LogTagDelimiter is the delimiter for different log tags.
	LogTagDelimiter = ":"
)

type LogViewOptions

type LogViewOptions struct {
	// Identifier (ID) of the container and namespace it's in.
	ContainerID string
	Namespace   string

	// Absolute path to the nerdctl datastore's root.
	DatastoreRootPath string

	// LogPath specify the log path for container created via CRI
	LogPath string

	// Whether or not to follow the output of the container logs.
	Follow bool

	// Whether or not to print timestampts for each line.
	Timestamps bool

	// Uint representing the number of most recent log entries to display. 0 = "all".
	Tail uint

	// Start/end timestampts to filter logs by.
	Since string
	Until string
}

Set of options passable to log viewers.

func (*LogViewOptions) Validate

func (lvo *LogViewOptions) Validate() error

type LogViewerFunc

type LogViewerFunc func(lvopts LogViewOptions, stdout, stderr io.Writer, stopChannel chan os.Signal) error

Type alias for functions which write out logs to the provided stdout/stderr Writers. Depending on the provided `LogViewOptions.Follow` option, the function may block indefinitely until something is sent through the `stopChannel`.

type SyslogLogger

type SyslogLogger struct {
	Opts map[string]string
	// contains filtered or unexported fields
}

func (*SyslogLogger) Init

func (sy *SyslogLogger) Init(dataStore string, ns string, id string) error

func (*SyslogLogger) PostProcess

func (sy *SyslogLogger) PostProcess() error

func (*SyslogLogger) PreProcess

func (sy *SyslogLogger) PreProcess(dataStore string, config *logging.Config) error

func (*SyslogLogger) Process

func (sy *SyslogLogger) Process(stdout <-chan string, stderr <-chan string) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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