Documentation
¶
Overview ¶
Package writer implements the kmsg writer.
Index ¶
Examples ¶
Constants ¶
const DefaultDevKmsg = "/dev/kmsg"
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 ConvertKernelMessagePriority ¶
func ConvertKernelMessagePriority(s string) KernelMessagePriority
ref. https://github.com/torvalds/linux/blob/master/tools/include/linux/kern_levels.h#L8-L15
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)