mirror of
https://github.com/lordmathis/llamactl.git
synced 2025-11-06 00:54:23 +00:00
Move logging to separate struct
This commit is contained in:
@@ -311,3 +311,7 @@ func (i *Process) IsRemote() bool {
|
|||||||
|
|
||||||
return len(i.options.Nodes) > 0
|
return len(i.options.Nodes) > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *Process) GetLogs(num_lines int) (string, error) {
|
||||||
|
return i.logger.GetLogs(num_lines)
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -14,6 +15,7 @@ type InstanceLogger struct {
|
|||||||
logDir string
|
logDir string
|
||||||
logFile *os.File
|
logFile *os.File
|
||||||
logFilePath string
|
logFilePath string
|
||||||
|
mu sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewInstanceLogger(name string, logDir string) *InstanceLogger {
|
func NewInstanceLogger(name string, logDir string) *InstanceLogger {
|
||||||
@@ -25,6 +27,9 @@ func NewInstanceLogger(name string, logDir string) *InstanceLogger {
|
|||||||
|
|
||||||
// Create creates and opens the log files for stdout and stderr
|
// Create creates and opens the log files for stdout and stderr
|
||||||
func (i *InstanceLogger) Create() error {
|
func (i *InstanceLogger) Create() error {
|
||||||
|
i.mu.Lock()
|
||||||
|
defer i.mu.Unlock()
|
||||||
|
|
||||||
if i.logDir == "" {
|
if i.logDir == "" {
|
||||||
return fmt.Errorf("logDir is empty for instance %s", i.name)
|
return fmt.Errorf("logDir is empty for instance %s", i.name)
|
||||||
}
|
}
|
||||||
@@ -52,16 +57,15 @@ func (i *InstanceLogger) Create() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetLogs retrieves the last n lines of logs from the instance
|
// GetLogs retrieves the last n lines of logs from the instance
|
||||||
func (i *Process) GetLogs(num_lines int) (string, error) {
|
func (i *InstanceLogger) GetLogs(num_lines int) (string, error) {
|
||||||
i.mu.RLock()
|
i.mu.RLock()
|
||||||
logFileName := i.logger.logFilePath
|
defer i.mu.RUnlock()
|
||||||
i.mu.RUnlock()
|
|
||||||
|
|
||||||
if logFileName == "" {
|
if i.logFilePath == "" {
|
||||||
return "", fmt.Errorf("log file not created for instance %s", i.Name)
|
return "", fmt.Errorf("log file not created for instance %s", i.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
file, err := os.Open(logFileName)
|
file, err := os.Open(i.logFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("failed to open log file: %w", err)
|
return "", fmt.Errorf("failed to open log file: %w", err)
|
||||||
}
|
}
|
||||||
@@ -95,6 +99,9 @@ func (i *Process) GetLogs(num_lines int) (string, error) {
|
|||||||
|
|
||||||
// closeLogFile closes the log files
|
// closeLogFile closes the log files
|
||||||
func (i *InstanceLogger) Close() {
|
func (i *InstanceLogger) Close() {
|
||||||
|
i.mu.Lock()
|
||||||
|
defer i.mu.Unlock()
|
||||||
|
|
||||||
if i.logFile != nil {
|
if i.logFile != nil {
|
||||||
timestamp := time.Now().Format("2006-01-02 15:04:05")
|
timestamp := time.Now().Format("2006-01-02 15:04:05")
|
||||||
fmt.Fprintf(i.logFile, "=== Instance %s stopped at %s ===\n\n", i.name, timestamp)
|
fmt.Fprintf(i.logFile, "=== Instance %s stopped at %s ===\n\n", i.name, timestamp)
|
||||||
Reference in New Issue
Block a user