writer

package
v0.10.0 Latest Latest
Warning

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

Go to latest
Published: Feb 4, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package writer implements the kmsg writer.

Index

Examples

Constants

View Source
const DefaultDevKmsg = "/dev/kmsg"
View Source
const MaxPrintkRecordLength = 1024 - 48

MaxPrintkRecordLength is the maximum length of a printk record. ref. "PRINTKRB_RECORD_MAX" in https://github.com/torvalds/linux/blob/94305e83eccb3120c921cd3a015cd74731140bac/kernel/printk/internal.h#L52 "PRINTK_PREFIX_MAX" in https://github.com/torvalds/linux/blob/94305e83eccb3120c921cd3a015cd74731140bac/kernel/printk/internal.h#L40C9-L40C26

Variables

This section is empty.

Functions

This section is empty.

Types

type KernelMessage

type KernelMessage struct {
	// Priority is the priority of the kernel message.
	// ref. https://github.com/torvalds/linux/blob/master/tools/include/linux/kern_levels.h#L8-L15
	Priority KernelMessagePriority `json:"priority"`
	// Message is the message of the kernel message.
	Message string `json:"message"`
}

KernelMessage represents a kernel message.

Example
msg := &KernelMessage{
	Priority: KernelMessagePriorityWarning,
	Message:  "Temperature threshold exceeded",
}

// Validate the message
if err := msg.Validate(); err != nil {
	fmt.Printf("Invalid message: %v\n", err)
}

// Get syslog priority
priority := msg.Priority.SyslogPriority()
fmt.Printf("Syslog priority: %d\n", priority)
Output:

Syslog priority: 44

func (*KernelMessage) Validate

func (m *KernelMessage) Validate() error

Validate validates the kernel message.

type KernelMessagePriority

type KernelMessagePriority string
const (
	KernelMessagePriorityEmerg   KernelMessagePriority = "KERN_EMERG"
	KernelMessagePriorityAlert   KernelMessagePriority = "KERN_ALERT"
	KernelMessagePriorityCrit    KernelMessagePriority = "KERN_CRIT"
	KernelMessagePriorityError   KernelMessagePriority = "KERN_ERR"
	KernelMessagePriorityWarning KernelMessagePriority = "KERN_WARNING"
	KernelMessagePriorityNotice  KernelMessagePriority = "KERN_NOTICE"
	KernelMessagePriorityInfo    KernelMessagePriority = "KERN_INFO"
	KernelMessagePriorityDebug   KernelMessagePriority = "KERN_DEBUG"
	KernelMessagePriorityDefault KernelMessagePriority = "KERN_DEFAULT"
)

func (KernelMessagePriority) SyslogPriority

func (priority KernelMessagePriority) SyslogPriority() int

SyslogPriority converts KernelMessagePriority to syslog priority value. Default facility is LOG_USER, severity mapping follows standard syslog levels. ref. https://www.kernel.org/doc/Documentation/ABI/testing/dev-kmsg

type KmsgWriter

type KmsgWriter interface {
	// Write writes a kernel message to the kernel log.
	Write(msg *KernelMessage) error
}

KmsgWriter defines the interface for writing kernel messages.

func NewWriter

func NewWriter(devFile string) KmsgWriter
Example

Example test

// Create a new writer (will be noOpWriter on non-Linux or non-root)
writer := NewWriter("")

// Write a kernel message
msg := &KernelMessage{
	Priority: KernelMessagePriorityInfo,
	Message:  "System initialized successfully",
}

_ = writer.Write(msg)

Jump to

Keyboard shortcuts

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