github.com/AlpineAIO/wails/v2@v2.0.0-beta.32.0.20240505041856-1047a8fa5fef/pkg/logger/filelogger.go (about)

     1  package logger
     2  
     3  import (
     4  	"log"
     5  	"os"
     6  )
     7  
     8  // FileLogger is a utility to log messages to a number of destinations
     9  type FileLogger struct {
    10  	filename string
    11  }
    12  
    13  // NewFileLogger creates a new Logger.
    14  func NewFileLogger(filename string) Logger {
    15  	return &FileLogger{
    16  		filename: filename,
    17  	}
    18  }
    19  
    20  // Print works like Sprintf.
    21  func (l *FileLogger) Print(message string) {
    22  	f, err := os.OpenFile(l.filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o644)
    23  	if err != nil {
    24  		log.Fatal(err)
    25  	}
    26  	if _, err := f.WriteString(message); err != nil {
    27  		f.Close()
    28  		log.Fatal(err)
    29  	}
    30  	f.Close()
    31  }
    32  
    33  func (l *FileLogger) Println(message string) {
    34  	l.Print(message + "\n")
    35  }
    36  
    37  // Trace level logging. Works like Sprintf.
    38  func (l *FileLogger) Trace(message string) {
    39  	l.Println("TRACE | " + message)
    40  }
    41  
    42  // Debug level logging. Works like Sprintf.
    43  func (l *FileLogger) Debug(message string) {
    44  	l.Println("DEBUG | " + message)
    45  }
    46  
    47  // Info level logging. Works like Sprintf.
    48  func (l *FileLogger) Info(message string) {
    49  	l.Println("INFO  | " + message)
    50  }
    51  
    52  // Warning level logging. Works like Sprintf.
    53  func (l *FileLogger) Warning(message string) {
    54  	l.Println("WARN  | " + message)
    55  }
    56  
    57  // Error level logging. Works like Sprintf.
    58  func (l *FileLogger) Error(message string) {
    59  	l.Println("ERROR | " + message)
    60  }
    61  
    62  // Fatal level logging. Works like Sprintf.
    63  func (l *FileLogger) Fatal(message string) {
    64  	l.Println("FATAL | " + message)
    65  	os.Exit(1)
    66  }