|
|
@ -4,6 +4,7 @@ import ( |
|
|
|
"flag" |
|
|
|
"flag" |
|
|
|
"fmt" |
|
|
|
"fmt" |
|
|
|
"io" |
|
|
|
"io" |
|
|
|
|
|
|
|
"os" |
|
|
|
"path" |
|
|
|
"path" |
|
|
|
"runtime" |
|
|
|
"runtime" |
|
|
|
"strconv" |
|
|
|
"strconv" |
|
|
@ -24,7 +25,7 @@ var ( |
|
|
|
channel Channel |
|
|
|
channel Channel |
|
|
|
alsoStdout bool |
|
|
|
alsoStdout bool |
|
|
|
withCaller Caller |
|
|
|
withCaller Caller |
|
|
|
|
|
|
|
stdOut io.Writer |
|
|
|
levelToNames = map[Level]string{ |
|
|
|
levelToNames = map[Level]string{ |
|
|
|
LevelFatal: "FATAL", |
|
|
|
LevelFatal: "FATAL", |
|
|
|
LevelError: "ERROR", |
|
|
|
LevelError: "ERROR", |
|
|
@ -82,6 +83,7 @@ const ( |
|
|
|
FIlE Channel = iota |
|
|
|
FIlE Channel = iota |
|
|
|
SYSLOG |
|
|
|
SYSLOG |
|
|
|
KAFKA |
|
|
|
KAFKA |
|
|
|
|
|
|
|
STDOUT |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
func (c *Channel) String() string { |
|
|
|
func (c *Channel) String() string { |
|
|
@ -90,15 +92,19 @@ func (c *Channel) String() string { |
|
|
|
return "file" |
|
|
|
return "file" |
|
|
|
case SYSLOG: |
|
|
|
case SYSLOG: |
|
|
|
return "syslog" |
|
|
|
return "syslog" |
|
|
|
|
|
|
|
case STDOUT: |
|
|
|
|
|
|
|
return "none" |
|
|
|
} |
|
|
|
} |
|
|
|
return "file" |
|
|
|
return "file" |
|
|
|
} |
|
|
|
} |
|
|
|
func (c *Channel) Set(value string) error { |
|
|
|
func (c *Channel) Set(value string) error { |
|
|
|
switch value { |
|
|
|
switch strings.ToLower(value) { |
|
|
|
case "file": |
|
|
|
case "file": |
|
|
|
*c = FIlE |
|
|
|
*c = FIlE |
|
|
|
case "syslog": |
|
|
|
case "syslog": |
|
|
|
*c = SYSLOG |
|
|
|
*c = SYSLOG |
|
|
|
|
|
|
|
case "none": |
|
|
|
|
|
|
|
*c = STDOUT |
|
|
|
default: |
|
|
|
default: |
|
|
|
*c = FIlE |
|
|
|
*c = FIlE |
|
|
|
} |
|
|
|
} |
|
|
@ -194,7 +200,7 @@ func Init() (writer io.Writer, err error) { |
|
|
|
} |
|
|
|
} |
|
|
|
if logWriter == nil && channel == FIlE { |
|
|
|
if logWriter == nil && channel == FIlE { |
|
|
|
if logPath == "" { |
|
|
|
if logPath == "" { |
|
|
|
logPath = "/data/logs/" + logName + ".log" |
|
|
|
logPath = "/var/log/" + logName + ".log" |
|
|
|
} |
|
|
|
} |
|
|
|
logWriter, err = NewFileLogger(logPath, logName, flushInterval, fileSplitSize, 4*1024) |
|
|
|
logWriter, err = NewFileLogger(logPath, logName, flushInterval, fileSplitSize, 4*1024) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
@ -204,6 +210,9 @@ func Init() (writer io.Writer, err error) { |
|
|
|
if logWriter == nil && channel == SYSLOG { |
|
|
|
if logWriter == nil && channel == SYSLOG { |
|
|
|
logWriter, _ = NewSyslogWriter("", "", logLevel, logName) |
|
|
|
logWriter, _ = NewSyslogWriter("", "", logLevel, logName) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if logWriter == nil && channel == STDOUT { |
|
|
|
|
|
|
|
logWriter = os.Stdout |
|
|
|
|
|
|
|
} |
|
|
|
inited = true |
|
|
|
inited = true |
|
|
|
return logWriter, nil |
|
|
|
return logWriter, nil |
|
|
|
} |
|
|
|
} |
|
|
@ -235,7 +244,6 @@ func format(level Level, msg string) string { |
|
|
|
default: |
|
|
|
default: |
|
|
|
context = fmt.Sprintf("%s:%03d", path.Base(file), line) |
|
|
|
context = fmt.Sprintf("%s:%03d", path.Base(file), line) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return fmt.Sprintf("%s\t[%4s]\t%s\t%s\n", time.Now().Format("2006-01-02 15:04:05.999"), getLevelName(level), context, msg) |
|
|
|
return fmt.Sprintf("%s\t[%4s]\t%s\t%s\n", time.Now().Format("2006-01-02 15:04:05.999"), getLevelName(level), context, msg) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
return fmt.Sprintf("%s\t[%4s]\t%s\n", time.Now().Format("2006-01-02 15:04:05.999"), getLevelName(level), msg) |
|
|
|
return fmt.Sprintf("%s\t[%4s]\t%s\n", time.Now().Format("2006-01-02 15:04:05.999"), getLevelName(level), msg) |
|
|
@ -255,7 +263,7 @@ func write(level Level, msg string) (err error) { |
|
|
|
messageStr := format(level, msg) |
|
|
|
messageStr := format(level, msg) |
|
|
|
_, err = logWriter.Write([]byte(messageStr)) |
|
|
|
_, err = logWriter.Write([]byte(messageStr)) |
|
|
|
if alsoStdout { |
|
|
|
if alsoStdout { |
|
|
|
fmt.Print(messageStr) |
|
|
|
stdOut.Write([]byte(messageStr)) |
|
|
|
} |
|
|
|
} |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|