mirror of
https://github.com/romychs/Ocean-240.2-Emulator.git
synced 2026-10-31 19:57:09 +03:00
Z80 basic impl completed
This commit is contained in:
1 parent
76829b80cc
commit
610423f85a
21 files changed
+3121
-285
No files matched your search
@@ -0,0 +1,85 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var logFile *os.File = nil
|
||||
var logBuffer *bufio.Writer = nil
|
||||
|
||||
type LogFormatter struct {
|
||||
}
|
||||
|
||||
func (f *LogFormatter) Format(entry *log.Entry) ([]byte, error) {
|
||||
caller := "-"
|
||||
if entry.HasCaller() {
|
||||
caller = filepath.Base(entry.Caller.File) + ":" + strconv.Itoa(entry.Caller.Line)
|
||||
}
|
||||
lvl := strings.ToUpper(entry.Level.String())
|
||||
if len(lvl) > 0 {
|
||||
lvl = lvl[0:1]
|
||||
} else {
|
||||
lvl = "-"
|
||||
}
|
||||
logMessage := fmt.Sprintf("%s[%s][%s]: %s\n", entry.Time.Format("2006-01-02T15:04:05"), lvl, caller, entry.Message) //time.RFC3339
|
||||
|
||||
return []byte(logMessage), nil
|
||||
}
|
||||
|
||||
// InitLogging Initialise logging format and level
|
||||
func InitLogging() {
|
||||
log.SetFormatter(new(LogFormatter))
|
||||
log.SetLevel(log.DebugLevel)
|
||||
log.SetReportCaller(true)
|
||||
log.SetOutput(os.Stdout)
|
||||
}
|
||||
|
||||
// FlushLogs Flush logs if logging to file
|
||||
func FlushLogs() {
|
||||
if logBuffer != nil {
|
||||
err := logBuffer.Flush()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ReconfigureLogging Reconfigure logging by config values
|
||||
func ReconfigureLogging(config *config.ServiceConfig) {
|
||||
// redirect logging if log file specified
|
||||
if len(config.LogFile) > 0 {
|
||||
var err error
|
||||
logFile, err = os.OpenFile(config.LogFile, os.O_WRONLY|syscall.O_CREAT|syscall.O_APPEND, 0664)
|
||||
if err != nil {
|
||||
log.Fatalf("Can not access to log file: %s\n%v", config.LogFile, err)
|
||||
}
|
||||
logBuffer = bufio.NewWriter(logFile)
|
||||
log.SetOutput(logBuffer)
|
||||
}
|
||||
if len(config.LogLevel) > 0 {
|
||||
level, err := log.ParseLevel(config.LogLevel)
|
||||
if err != nil {
|
||||
log.Fatalf("Can not parse log level: %s\n%v", config.LogLevel, err)
|
||||
}
|
||||
log.SetLevel(level)
|
||||
}
|
||||
}
|
||||
|
||||
// CloseLogs If log output is file, flush and close it
|
||||
func CloseLogs() {
|
||||
FlushLogs()
|
||||
if logFile != nil {
|
||||
err := logFile.Close()
|
||||
if err != nil {
|
||||
log.Warnf("Can not close log file: %s\n%v", logFile.Name(), err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user