started new logger output
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Sebastian Frank 2019-03-27 13:52:22 +01:00
parent 5d6d03702e
commit 7695f42e20
Signed by: apairon
GPG Key ID: 7270D06DDA7FE8C3
4 changed files with 58 additions and 28 deletions

View File

@ -46,57 +46,60 @@ func main() {
logger.SetLogLevel(level) logger.SetLogLevel(level)
if progressBars != nil && *progressBars { if progressBars != nil && *progressBars {
progress.Init() progress.Start()
} }
if inDir == nil || *inDir == "" { if inDir == nil || *inDir == "" {
logger.Log.Panic("input directory not specified") logger.E("input directory not specified")
os.Exit(1)
} }
iDir := path.Clean(*inDir) iDir := path.Clean(*inDir)
inDir = &iDir inDir = &iDir
logger.Log.Infof("input directory: %s", *inDir) logger.I("input directory: %s", *inDir)
if outDir == nil || *outDir == "" { if outDir == nil || *outDir == "" {
logger.Log.Panic("output directory not specified") logger.E("output directory not specified")
os.Exit(1)
} }
oDir := path.Clean(*outDir) oDir := path.Clean(*outDir)
outDir = &oDir outDir = &oDir
logger.Log.Infof("output directory: %s", *outDir) logger.I("output directory: %s", *outDir)
if createOutDir != nil && *createOutDir { if createOutDir != nil && *createOutDir {
if _, err := os.Stat(*outDir); os.IsNotExist(err) { if _, err := os.Stat(*outDir); os.IsNotExist(err) {
logger.Log.Debugf("output directory '%s' does not exist", *outDir) logger.D("output directory '%s' does not exist", *outDir)
logger.Log.Debugf("trying to create output directory: %s", *outDir) logger.D("trying to create output directory: %s", *outDir)
err := os.MkdirAll(*outDir, 0755) err := os.MkdirAll(*outDir, 0755)
if err != nil { if err != nil {
logger.Log.Panic(err) logger.Log.Panic(err)
} }
logger.Log.Noticef("created output directory: %s", *outDir) logger.I("created output directory: %s", *outDir)
} else { } else {
logger.Log.Noticef("output directory '%s' already exists", *outDir) logger.I("output directory '%s' already exists", *outDir)
} }
} }
if fD, err := os.Stat(*outDir); os.IsNotExist(err) { if fD, err := os.Stat(*outDir); os.IsNotExist(err) {
logger.Log.Panicf("output directory '%s' does not exist, try -create parameter or create manually", *outDir) logger.Eexit(err, "output directory '%s' does not exist, try -create parameter or create manually", *outDir)
} else { } else {
if fD == nil { if fD == nil {
logger.Log.Panicf("something went wrong, could not get file handle for output dir %s", *outDir) logger.P("something went wrong, could not get file handle for output dir %s", *outDir)
} else if !fD.IsDir() { } else if !fD.IsDir() {
logger.Log.Panicf("output directory '%s' is not a directory", *outDir) logger.E("output directory '%s' is not a directory", *outDir)
os.Exit(1)
} }
} }
logger.Log.Debug("reading global config...") logger.D("reading global config...")
configFilename := *inDir + "/config.yml" configFilename := *inDir + "/config.yml"
err := mark2web.Config.ReadFromFile(configFilename) err := mark2web.Config.ReadFromFile(configFilename)
if err != nil { if err != nil {
logger.Log.Panicf("could not read file '%s': %s", configFilename, err) logger.Eexit(err, "could not read file '%s'", configFilename)
} }
mark2web.Config.Directories.Input = *inDir mark2web.Config.Directories.Input = *inDir
mark2web.Config.Directories.Output = *outDir mark2web.Config.Directories.Output = *outDir
logger.Log.Debugf("reading input directory %s", *inDir) logger.D("reading input directory %s", *inDir)
defaultTemplate := "base.html" defaultTemplate := "base.html"
defaultInputFile := "README.md" defaultInputFile := "README.md"

View File

@ -3,7 +3,6 @@ package jobm
import ( import (
"runtime" "runtime"
"sync" "sync"
"time"
"gitbase.de/apairon/mark2web/pkg/progress" "gitbase.de/apairon/mark2web/pkg/progress"
) )
@ -52,7 +51,7 @@ func Enqueue(jobs ...Job) {
// Wait will wait for all jobs to finish // Wait will wait for all jobs to finish
func Wait() { func Wait() {
close(jobChan) close(jobChan)
time.Sleep(time.Millisecond * 500) progress.Stop()
wg.Wait() wg.Wait()
} }

View File

@ -11,6 +11,8 @@ import (
var Log = logging.MustGetLogger("myLogger") var Log = logging.MustGetLogger("myLogger")
var logBackendLeveled logging.LeveledBackend var logBackendLeveled logging.LeveledBackend
var Prefix = ""
// SetLogLevel sets log level for global logger (debug, info, notice, warning, error) // SetLogLevel sets log level for global logger (debug, info, notice, warning, error)
func SetLogLevel(level string) { func SetLogLevel(level string) {
logBackendLevel := logging.INFO logBackendLevel := logging.INFO
@ -44,7 +46,7 @@ func SetLogLevel(level string) {
func configureLogger() { func configureLogger() {
logBackend := logging.NewLogBackend(os.Stderr, "", 0) logBackend := logging.NewLogBackend(os.Stderr, "", 0)
logBackendFormatter := logging.NewBackendFormatter(logBackend, logging.MustStringFormatter( logBackendFormatter := logging.NewBackendFormatter(logBackend, logging.MustStringFormatter(
`%{color}%{time:15:04:05.000} %{shortfunc} ▶ %{level:.4s} %{id:03x}%{color:reset} %{message}`, `%{color}%{time:2006-01-02 15:04:05.000} ▶ %{level:.4s} %{id:03x}%{color:reset} %{message}`,
)) ))
logBackendLeveled = logging.AddModuleLevel(logBackendFormatter) logBackendLeveled = logging.AddModuleLevel(logBackendFormatter)
logBackendLeveled.SetLevel(logging.NOTICE, "") logBackendLeveled.SetLevel(logging.NOTICE, "")
@ -59,34 +61,38 @@ func init() {
configureLogger() configureLogger()
} }
func prefix() string {
return Prefix
}
// D is shorthand for Debugf // D is shorthand for Debugf
func D(format string, args ...interface{}) { func D(format string, args ...interface{}) {
Log.Debugf(format, args...) Log.Debugf(prefix()+format, args...)
} }
// I is shorthand for Infof // I is shorthand for Infof
func I(format string, args ...interface{}) { func I(format string, args ...interface{}) {
Log.Infof(format, args...) Log.Infof(prefix()+format, args...)
} }
// N is shorthand for Noticef // N is shorthand for Noticef
func N(format string, args ...interface{}) { func N(format string, args ...interface{}) {
Log.Noticef(format, args...) Log.Noticef(prefix()+format, args...)
} }
// W is shorthand for Warningf // W is shorthand for Warningf
func W(format string, args ...interface{}) { func W(format string, args ...interface{}) {
Log.Warningf(format, args...) Log.Warningf(prefix()+format, args...)
} }
// E is shorthand for Errorf // E is shorthand for Errorf
func E(format string, args ...interface{}) { func E(format string, args ...interface{}) {
Log.Errorf(format, args...) Log.Errorf(prefix()+format, args...)
} }
// P is shorthand for Panicf // P is shorthand for Panicf
func P(format string, args ...interface{}) { func P(format string, args ...interface{}) {
Log.Panicf(format, args...) Log.Panicf(prefix()+format, args...)
} }
// Eerr is shorthand for // Eerr is shorthand for
@ -96,7 +102,7 @@ func P(format string, args ...interface{}) {
func Eerr(err error, format string, args ...interface{}) { func Eerr(err error, format string, args ...interface{}) {
if err != nil { if err != nil {
args = append(args, err) args = append(args, err)
Log.Errorf(format+"\nError: %s", args...) Log.Errorf(prefix()+format+" (Error: %s)", args...)
} }
} }
@ -119,6 +125,6 @@ func Eexit(err error, format string, args ...interface{}) {
func Perr(err error, format string, args ...interface{}) { func Perr(err error, format string, args ...interface{}) {
if err != nil { if err != nil {
args = append(args, err) args = append(args, err)
Log.Panicf(format+"\nError: %s", args...) Log.Panicf(prefix()+format+" (Error: %s)", args...)
} }
} }

View File

@ -2,8 +2,10 @@ package progress
import ( import (
"fmt" "fmt"
"time"
"gitbase.de/apairon/mark2web/pkg/helper" "gitbase.de/apairon/mark2web/pkg/helper"
"gitbase.de/apairon/mark2web/pkg/logger"
"github.com/gosuri/uiprogress" "github.com/gosuri/uiprogress"
"github.com/mattn/go-tty" "github.com/mattn/go-tty"
) )
@ -23,8 +25,12 @@ var OverallTotal = 0
// OverallDone is number of done jobs // OverallDone is number of done jobs
var OverallDone = 0 var OverallDone = 0
// Init initializes the bar drawing func init() {
func Init() { updateLoggerPrefix()
}
// Start initializes the bar drawing
func Start() {
if t, err := tty.Open(); err == nil && t != nil { if t, err := tty.Open(); err == nil && t != nil {
terminalWidth, _, _ = t.Size() terminalWidth, _, _ = t.Size()
t.Close() t.Close()
@ -33,9 +39,15 @@ func Init() {
initialized = true initialized = true
} }
func updateLoggerPrefix() {
logger.Prefix = fmt.Sprintf("%3d/%3d: ", OverallDone, OverallTotal)
}
// IncrTotal increases the total jobs for the bar // IncrTotal increases the total jobs for the bar
func IncrTotal(barname string) { func IncrTotal(barname string) {
OverallTotal++ OverallTotal++
updateLoggerPrefix()
if initialized { if initialized {
_bar := bars[barname] _bar := bars[barname]
if _bar == nil { if _bar == nil {
@ -60,6 +72,8 @@ func IncrTotal(barname string) {
// IncrDone increases to done jobs counter // IncrDone increases to done jobs counter
func IncrDone(barname string) { func IncrDone(barname string) {
OverallDone++ OverallDone++
updateLoggerPrefix()
if initialized { if initialized {
bars[barname].Bar.Incr() bars[barname].Bar.Incr()
bars[barname].Description = "" bars[barname].Description = ""
@ -72,3 +86,11 @@ func DescribeCurrent(barname, description string) {
bars[barname].Description = description bars[barname].Description = description
} }
} }
// Stop stops the bar drawing
func Stop() {
if initialized {
time.Sleep(time.Millisecond * 200)
uiprogress.Stop()
}
}