mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-25 10:18:59 +02:00
fix(proxmox): improve journalctl with log tailing fallback for non-systemd systems
- Format tail command with fallback retry logic - Add /var/log/messages fallback when no services specified Improves log viewing reliability on systems without systemd support.
This commit is contained in:
@@ -31,14 +31,15 @@ func formatTail(files []string, limit int) (string, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
var command strings.Builder
|
var command strings.Builder
|
||||||
command.WriteString("tail -f -q --retry ")
|
command.WriteString("tail -f -q ")
|
||||||
for _, file := range files {
|
for _, file := range files {
|
||||||
fmt.Fprintf(&command, " %q ", file)
|
fmt.Fprintf(&command, " %q ", file)
|
||||||
}
|
}
|
||||||
if limit > 0 {
|
if limit > 0 {
|
||||||
fmt.Fprintf(&command, " -n %d", limit)
|
fmt.Fprintf(&command, " -n %d", limit)
|
||||||
}
|
}
|
||||||
return command.String(), nil
|
// try --retry first, if it fails, try the command again
|
||||||
|
return fmt.Sprintf("sh -c '%s --retry 2>/dev/null || %s'", command.String(), command.String()), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func formatJournalctl(services []string, limit int) (string, error) {
|
func formatJournalctl(services []string, limit int) (string, error) {
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ func (n *Node) LXCCommand(ctx context.Context, vmid int, command string) (io.Rea
|
|||||||
|
|
||||||
// LXCJournalctl streams journalctl output for the given service.
|
// LXCJournalctl streams journalctl output for the given service.
|
||||||
//
|
//
|
||||||
|
// On non systemd systems, it will tail /var/log/messages as fallback.
|
||||||
|
//
|
||||||
// If services are not empty, it will be used to filter the output by service.
|
// If services are not empty, it will be used to filter the output by service.
|
||||||
// If limit is greater than 0, it will be used to limit the number of lines of output.
|
// If limit is greater than 0, it will be used to limit the number of lines of output.
|
||||||
func (n *Node) LXCJournalctl(ctx context.Context, vmid int, services []string, limit int) (io.ReadCloser, error) {
|
func (n *Node) LXCJournalctl(ctx context.Context, vmid int, services []string, limit int) (io.ReadCloser, error) {
|
||||||
@@ -46,6 +48,11 @@ func (n *Node) LXCJournalctl(ctx context.Context, vmid int, services []string, l
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if len(services) == 0 {
|
||||||
|
// add /var/log/messages fallback for non systemd systems
|
||||||
|
// in tail command, try --retry first, if it fails, try the command again
|
||||||
|
command = fmt.Sprintf("sh -c '%s 2>/dev/null || tail -f -q --retry /var/log/messages 2>/dev/null || tail -f -q /var/log/messages'", command)
|
||||||
|
}
|
||||||
return n.LXCCommand(ctx, vmid, command)
|
return n.LXCCommand(ctx, vmid, command)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user