From 27f0897faa46cd1507b819b318c4b78f4e49a81b Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 12 Dec 2014 16:50:59 +0800 Subject: [PATCH] package log --- log/logs.go | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100755 log/logs.go diff --git a/log/logs.go b/log/logs.go new file mode 100755 index 0000000..47e4dbb --- /dev/null +++ b/log/logs.go @@ -0,0 +1,133 @@ +// Copyright (c) 2014, B3log +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package log includes logging related manipulations. +// +// logger := log.NewLogger(os.Stdout, log.Debug) +// +// logger.Debug("debug message") +// logger.Info("info message") +// logger.Warn("warning message") +// logger.Error("error message") +// +// logger.Errorf("formatted %s message", "error") +package log + +import ( + "fmt" + "io" + stdlog "log" +) + +// Logging level. +const ( + Debug = iota + Info + Warn + Error +) + +// Logger is a simple logger with level. +// The underlying logger is the Go standard logging "log". +type Logger struct { + level int + logger *stdlog.Logger +} + +// NewLogger creates a logger. +func NewLogger(out io.Writer, level int) *Logger { + ret := &Logger{level: level, logger: stdlog.New(out, "", stdlog.Ldate|stdlog.Ltime|stdlog.Lshortfile)} + + return ret +} + +// Debug prints debug level message. +func (l *Logger) Debug(v ...interface{}) { + if Debug < l.level { + return + } + + l.logger.SetPrefix("D ") + l.logger.Output(2, fmt.Sprint(v...)) +} + +// Debugf prints debug level message with format. +func (l *Logger) Debugf(format string, v ...interface{}) { + if Debug < l.level { + return + } + + l.logger.SetPrefix("D ") + l.logger.Output(2, fmt.Sprintf(format, v...)) +} + +// Info prints info level message. +func (l *Logger) Info(v ...interface{}) { + if Info < l.level { + return + } + + l.logger.SetPrefix("I ") + l.logger.Output(2, fmt.Sprint(v...)) +} + +// Infof prints info level message with format. +func (l *Logger) Infof(format string, v ...interface{}) { + if Info < l.level { + return + } + + l.logger.SetPrefix("I ") + l.logger.Output(2, fmt.Sprintf(format, v...)) +} + +// Warn prints warning level message. +func (l *Logger) Warn(v ...interface{}) { + if Warn < l.level { + return + } + + l.logger.SetPrefix("W ") + l.logger.Output(2, fmt.Sprint(v...)) +} + +// Warn prints warning level message with format. +func (l *Logger) Warnf(format string, v ...interface{}) { + if Warn < l.level { + return + } + + l.logger.SetPrefix("W ") + l.logger.Output(2, fmt.Sprintf(format, v...)) +} + +// Error prints error level message. +func (l *Logger) Error(v ...interface{}) { + if Error < l.level { + return + } + + l.logger.SetPrefix("E ") + l.logger.Output(2, fmt.Sprint(v...)) +} + +// Errorf prints error level message with format. +func (l *Logger) Errorf(format string, v ...interface{}) { + if Error < l.level { + return + } + + l.logger.SetPrefix("E ") + l.logger.Output(2, fmt.Sprintf(format, v...)) +}