mirror of
https://github.com/Mikescher/kpsync.git
synced 2025-08-25 08:38:03 +02:00
133 lines
3.3 KiB
Go
133 lines
3.3 KiB
Go
package app
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"git.blackforestbytes.com/BlackForestBytes/goext/dataext"
|
|
"git.blackforestbytes.com/BlackForestBytes/goext/exerr"
|
|
"git.blackforestbytes.com/BlackForestBytes/goext/langext"
|
|
"git.blackforestbytes.com/BlackForestBytes/goext/termext"
|
|
)
|
|
|
|
func colDefault(v string) string {
|
|
return v
|
|
}
|
|
|
|
func (app *Application) LogFatal(msg string) {
|
|
app.logInternal("[F] ", msg, termext.Red)
|
|
panic(0)
|
|
}
|
|
|
|
func (app *Application) LogFatalErr(msg string, err error) {
|
|
if err != nil {
|
|
app.logInternal("[F] ", msg+"\n"+err.Error()+"\n"+exerr.FromError(err).FormatLog(exerr.LogPrintOverview), termext.Red)
|
|
} else {
|
|
app.logInternal("[F] ", msg, termext.Red)
|
|
}
|
|
|
|
panic(0)
|
|
}
|
|
|
|
func (app *Application) LogError(msg string, err error) {
|
|
if err != nil {
|
|
app.logInternal("[E] ", msg+"\n"+err.Error()+"\n"+exerr.FromError(err).FormatLog(exerr.LogPrintOverview), termext.Red)
|
|
} else {
|
|
app.logInternal("[E] ", msg, termext.Red)
|
|
}
|
|
}
|
|
|
|
func (app *Application) LogWarn(msg string) {
|
|
app.logInternal("[W] ", msg, termext.Red)
|
|
}
|
|
|
|
func (app *Application) LogInfo(msg string) {
|
|
app.logInternal("[I] ", msg, colDefault)
|
|
}
|
|
|
|
func (app *Application) LogDebug(msg string) {
|
|
app.logInternal("[D] ", msg, termext.Gray)
|
|
}
|
|
|
|
func (app *Application) logInternal(pf string, msg string, c func(_ string) string) {
|
|
app.logLock.Lock()
|
|
defer app.logLock.Unlock()
|
|
|
|
if !termext.SupportsColors() && !app.config.ForceColors {
|
|
c = func(s string) string { return s }
|
|
}
|
|
|
|
for i, s := range strings.Split(msg, "\n") {
|
|
if i == 0 {
|
|
println(c(pf + s))
|
|
app.logList = append(app.logList, dataext.NewTriple(strings.TrimSpace(pf), s, c))
|
|
if app.logFile != nil {
|
|
_, err := app.logFile.WriteString(pf + s + "\n")
|
|
if err != nil {
|
|
app.fallbackLog("[!] Failed to write logfile: " + err.Error())
|
|
}
|
|
}
|
|
} else {
|
|
println(c(langext.StrRepeat(" ", len(pf)) + s))
|
|
app.logList = append(app.logList, dataext.NewTriple(strings.TrimSpace(pf), s, c))
|
|
if app.logFile != nil {
|
|
_, err := app.logFile.WriteString(langext.StrRepeat(" ", len(pf)) + s + "\n")
|
|
if err != nil {
|
|
app.fallbackLog("[!] Failed to write logfile: " + err.Error())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if app.logFile != nil {
|
|
err := app.logFile.Sync()
|
|
if err != nil {
|
|
app.fallbackLog("[!] Failed to flush logfile: " + err.Error())
|
|
}
|
|
}
|
|
}
|
|
|
|
func (app *Application) LogLine() {
|
|
app.logLock.Lock()
|
|
defer app.logLock.Unlock()
|
|
|
|
println()
|
|
|
|
if app.logFile != nil {
|
|
_, err := app.logFile.WriteString("\n")
|
|
if err != nil {
|
|
app.fallbackLog("[!] Failed to write logfile: " + err.Error())
|
|
}
|
|
err = app.logFile.Sync()
|
|
if err != nil {
|
|
app.fallbackLog("[!] Failed to flush logfile: " + err.Error())
|
|
}
|
|
}
|
|
|
|
app.logList = append(app.logList, dataext.NewTriple("", "", func(v string) string { return v }))
|
|
}
|
|
|
|
func (app *Application) fallbackLog(s string) {
|
|
if termext.SupportsColors() || app.config.ForceColors {
|
|
s = termext.Red(s)
|
|
}
|
|
|
|
println(s)
|
|
}
|
|
|
|
func (app *Application) writeOutStartupLogs() {
|
|
app.logLock.Lock()
|
|
defer app.logLock.Unlock()
|
|
|
|
for _, v := range app.logList {
|
|
_, err := app.logFile.WriteString(v.V1 + " " + v.V2 + "\n")
|
|
if err != nil {
|
|
app.fallbackLog("[!] Failed to write logfile: " + err.Error())
|
|
}
|
|
}
|
|
|
|
err := app.logFile.Sync()
|
|
if err != nil {
|
|
app.fallbackLog("[!] Failed to flush logfile: " + err.Error())
|
|
}
|
|
}
|