| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // Copyright 2014 beego Author. All Rights Reserved.
- //
- // 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 logs
- import (
- "encoding/json"
- "log"
- "os"
- "runtime"
- )
- type Brush func(string) string
- func NewBrush(color string) Brush {
- pre := "\033["
- reset := "\033[0m"
- return func(text string) string {
- return pre + color + "m" + text + reset
- }
- }
- var colors = []Brush{
- NewBrush("1;37"), // Emergency white
- NewBrush("1;36"), // Alert cyan
- NewBrush("1;35"), // Critical magenta
- NewBrush("1;31"), // Error red
- NewBrush("1;33"), // Warning yellow
- NewBrush("1;32"), // Notice green
- NewBrush("1;34"), // Informational blue
- NewBrush("1;34"), // Debug blue
- }
- // ConsoleWriter implements LoggerInterface and writes messages to terminal.
- type ConsoleWriter struct {
- lg *log.Logger
- Level int `json:"level"`
- }
- // create ConsoleWriter returning as LoggerInterface.
- func NewConsole() LoggerInterface {
- cw := &ConsoleWriter{
- lg: log.New(os.Stdout, "", log.Ldate|log.Ltime),
- Level: LevelDebug,
- }
- return cw
- }
- // init console logger.
- // jsonconfig like '{"level":LevelTrace}'.
- func (c *ConsoleWriter) Init(jsonconfig string) error {
- if len(jsonconfig) == 0 {
- return nil
- }
- return json.Unmarshal([]byte(jsonconfig), c)
- }
- // write message in console.
- func (c *ConsoleWriter) WriteMsg(msg string, level int) error {
- if level > c.Level {
- return nil
- }
- if goos := runtime.GOOS; goos == "windows" {
- c.lg.Println(msg)
- return nil
- }
- c.lg.Println(colors[level](msg))
- return nil
- }
- // implementing method. empty.
- func (c *ConsoleWriter) Destroy() {
- }
- // implementing method. empty.
- func (c *ConsoleWriter) Flush() {
- }
- func init() {
- Register("console", NewConsole)
- }
|