Merge pull request #319 from amrfaissal/fix-debug-log

Fixes debug log message
This commit is contained in:
Faissal Elamraoui 2016-11-18 22:02:38 +01:00 committed by GitHub
commit eac9dc25d3
10 changed files with 44 additions and 23 deletions

View File

@ -558,8 +558,7 @@ func createapi(cmd *Command, args []string) int {
apppath, packpath, err := checkEnv(args[0]) apppath, packpath, err := checkEnv(args[0])
if err != nil { if err != nil {
fmt.Println(err) logger.Fatalf("%s", err)
os.Exit(2)
} }
if driver == "" { if driver == "" {
driver = "mysql" driver = "mysql"
@ -658,7 +657,7 @@ func checkEnv(appname string) (apppath, packpath string, err error) {
gopath := gps[0] gopath := gps[0]
logger.Warn("You current workdir is not inside $GOPATH/src") logger.Warn("You current workdir is not inside $GOPATH/src")
logger.Debugf("GOPATH: %s", gopath) logger.Debugf("GOPATH: %s", __FILE__(), __LINE__(), gopath)
gosrcpath := path.Join(gopath, "src") gosrcpath := path.Join(gopath, "src")
apppath = path.Join(gosrcpath, appname) apppath = path.Join(gosrcpath, appname)

2
bee.go
View File

@ -90,6 +90,8 @@ var commands = []*Command{
cmdFix, cmdFix,
} }
var logger = GetBeeLogger(os.Stdout)
func main() { func main() {
flag.Usage = usage flag.Usage = usage
flag.Parse() flag.Parse()

2
g.go
View File

@ -91,7 +91,7 @@ func generateCode(cmd *Command, args []string) int {
gopath := gps[0] gopath := gps[0]
logger.Debugf("GOPATH: %s", gopath) logger.Debugf("GOPATH: %s", __FILE__(), __LINE__(), gopath)
gcmd := args[0] gcmd := args[0]
switch gcmd { switch gcmd {

View File

@ -954,7 +954,7 @@ func getPackagePath(curpath string) (packpath string) {
logger.Fatal("GOPATH environment variable is not set or empty") logger.Fatal("GOPATH environment variable is not set or empty")
} }
logger.Debugf("GOPATH: %s", gopath) logger.Debugf("GOPATH: %s", __FILE__(), __LINE__(), gopath)
appsrcpath := "" appsrcpath := ""
haspath := false haspath := false

View File

@ -19,7 +19,6 @@ import (
"io" "io"
"os" "os"
"path/filepath" "path/filepath"
"runtime"
"sync" "sync"
"sync/atomic" "sync/atomic"
"text/template" "text/template"
@ -40,7 +39,8 @@ const (
var ( var (
sequenceNo uint64 sequenceNo uint64
logger *BeeLogger instance *BeeLogger
once sync.Once
) )
// BeeLogger logs logging records to the specified io.Writer // BeeLogger logs logging records to the specified io.Writer
@ -62,7 +62,6 @@ type LogRecord struct {
var ( var (
logRecordTemplate *template.Template logRecordTemplate *template.Template
debugLogRecordTemplate *template.Template debugLogRecordTemplate *template.Template
debugLogFormat string
) )
func init() { func init() {
@ -81,9 +80,15 @@ func init() {
MustCheck(err) MustCheck(err)
debugLogRecordTemplate, err = template.New("dbgLogRecordTemplate").Funcs(funcs).Parse(debugLogFormat) debugLogRecordTemplate, err = template.New("dbgLogRecordTemplate").Funcs(funcs).Parse(debugLogFormat)
MustCheck(err) MustCheck(err)
}
// Initialize the logger instance with a NewColorWriter output // GetBeeLogger initializes the logger instance with a NewColorWriter output
logger = &BeeLogger{output: NewColorWriter(os.Stdout)} // and returns a singleton
func GetBeeLogger(w io.Writer) *BeeLogger {
once.Do(func() {
instance = &BeeLogger{output: NewColorWriter(w)}
})
return instance
} }
// SetOutput sets the logger output destination // SetOutput sets the logger output destination
@ -142,6 +147,10 @@ func (l *BeeLogger) getColorLevel(level int) string {
// mustLog logs the message according to the specified level and arguments. // mustLog logs the message according to the specified level and arguments.
// It panics in case of an error. // It panics in case of an error.
func (l *BeeLogger) mustLog(level int, message string, args ...interface{}) { func (l *BeeLogger) mustLog(level int, message string, args ...interface{}) {
// Acquire the lock
l.mu.Lock()
defer l.mu.Unlock()
// Create the logging record and pass into the output // Create the logging record and pass into the output
record := LogRecord{ record := LogRecord{
ID: fmt.Sprintf("%04d", atomic.AddUint64(&sequenceNo, 1)), ID: fmt.Sprintf("%04d", atomic.AddUint64(&sequenceNo, 1)),
@ -155,7 +164,7 @@ func (l *BeeLogger) mustLog(level int, message string, args ...interface{}) {
// mustLogDebug logs a debug message only if debug mode // mustLogDebug logs a debug message only if debug mode
// is enabled. i.e. DEBUG_ENABLED="1" // is enabled. i.e. DEBUG_ENABLED="1"
func (l *BeeLogger) mustLogDebug(message string, args ...interface{}) { func (l *BeeLogger) mustLogDebug(message string, file string, line int, args ...interface{}) {
if !IsDebugEnabled() { if !IsDebugEnabled() {
return return
} }
@ -163,9 +172,7 @@ func (l *BeeLogger) mustLogDebug(message string, args ...interface{}) {
// Change the output to Stderr // Change the output to Stderr
l.SetOutput(os.Stderr) l.SetOutput(os.Stderr)
// Create the log record and Get the filename // Create the log record
// and the line number of the caller
_, file, line, _ := runtime.Caller(1)
record := LogRecord{ record := LogRecord{
ID: fmt.Sprintf("%04d", atomic.AddUint64(&sequenceNo, 1)), ID: fmt.Sprintf("%04d", atomic.AddUint64(&sequenceNo, 1)),
Level: l.getColorLevel(levelDebug), Level: l.getColorLevel(levelDebug),
@ -178,13 +185,13 @@ func (l *BeeLogger) mustLogDebug(message string, args ...interface{}) {
} }
// Debug outputs a debug log message // Debug outputs a debug log message
func (l *BeeLogger) Debug(message string) { func (l *BeeLogger) Debug(message string, file string, line int) {
l.mustLogDebug(message) l.mustLogDebug(message, file, line)
} }
// Debugf outputs a formatted debug log message // Debugf outputs a formatted debug log message
func (l *BeeLogger) Debugf(message string, vars ...interface{}) { func (l *BeeLogger) Debugf(message string, file string, line int, vars ...interface{}) {
l.mustLogDebug(message, vars...) l.mustLogDebug(message, file, line, vars...)
} }
// Info outputs an information log message // Info outputs an information log message

View File

@ -73,7 +73,7 @@ func runMigration(cmd *Command, args []string) int {
gopath := gps[0] gopath := gps[0]
logger.Debugf("GOPATH: %s", gopath) logger.Debugf("GOPATH: %s", __FILE__(), __LINE__(), gopath)
// Load the configuration // Load the configuration
err := loadConfig() err := loadConfig()

2
run.go
View File

@ -99,7 +99,7 @@ func runApp(cmd *Command, args []string) int {
logger.Infof("Using '%s' as 'appname'", appname) logger.Infof("Using '%s' as 'appname'", appname)
logger.Debugf("Current path: %s", currpath) logger.Debugf("Current path: %s", __FILE__(), __LINE__(), currpath)
if runmode == "prod" || runmode == "dev" { if runmode == "prod" || runmode == "dev" {
os.Setenv("BEEGO_RUNMODE", runmode) os.Setenv("BEEGO_RUNMODE", runmode)

View File

@ -56,7 +56,7 @@ func testApp(cmd *Command, args []string) int {
currpath, _ := os.Getwd() currpath, _ := os.Getwd()
logger.Debugf("Current path: %s", currpath) logger.Debugf("Current path: %s", __FILE__(), __LINE__(), currpath)
err := loadConfig() err := loadConfig()
if err != nil { if err != nil {

12
util.go
View File

@ -262,3 +262,15 @@ func IsDebugEnabled() bool {
debugMode := os.Getenv("DEBUG_ENABLED") debugMode := os.Getenv("DEBUG_ENABLED")
return map[string]bool{"1": true, "0": false}[debugMode] return map[string]bool{"1": true, "0": false}[debugMode]
} }
// __FILE__ returns the file name in which the function was invoked
func __FILE__() string {
_, file, _, _ := runtime.Caller(1)
return file
}
// __LINE__ returns the line number at which the function was invoked
func __LINE__() int {
_, _, line, _ := runtime.Caller(1)
return line
}

View File

@ -16,7 +16,6 @@ package main
import ( import (
"bytes" "bytes"
"github.com/howeyc/fsnotify"
"os" "os"
"os/exec" "os/exec"
"regexp" "regexp"
@ -24,6 +23,8 @@ import (
"strings" "strings"
"sync" "sync"
"time" "time"
"github.com/howeyc/fsnotify"
) )
var ( var (
@ -209,7 +210,7 @@ func Kill() {
// Restart kills the running command process and starts it again // Restart kills the running command process and starts it again
func Restart(appname string) { func Restart(appname string) {
logger.Debugf("Kill running process") logger.Debugf("Kill running process", __FILE__(), __LINE__())
Kill() Kill()
go Start(appname) go Start(appname)
} }