70 lines
2.4 KiB
Go
70 lines
2.4 KiB
Go
// Copyright (C) 2014 Space Monkey, Inc.
|
|
//
|
|
// 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 spacelog
|
|
|
|
import (
|
|
"text/template"
|
|
)
|
|
|
|
// ColorizeLevel returns a TermColor byte sequence for the appropriate color
|
|
// for the level. If you'd like to configure your own color choices, you can
|
|
// make your own template with its own function map to your own colorize
|
|
// function.
|
|
func ColorizeLevel(level LogLevel) string {
|
|
switch level.Match() {
|
|
case Critical, Error:
|
|
return TermColors{}.Red()
|
|
case Warning:
|
|
return TermColors{}.Magenta()
|
|
case Notice:
|
|
return TermColors{}.Yellow()
|
|
case Info, Debug, Trace:
|
|
return TermColors{}.Green()
|
|
}
|
|
return ""
|
|
}
|
|
|
|
var (
|
|
// ColorTemplate uses the default ColorizeLevel method for color choices.
|
|
ColorTemplate = template.Must(template.New("color").Funcs(template.FuncMap{
|
|
"ColorizeLevel": ColorizeLevel}).Parse(
|
|
`{{.Blue}}{{.Date}} {{.Time}}{{.Reset}} ` +
|
|
`{{.Bold}}{{ColorizeLevel .Level}}{{.LevelJustified}}{{.Reset}} ` +
|
|
`{{.Underline}}{{.LoggerName}}{{.Reset}} ` +
|
|
`{{if .Filename}}{{.Filename}}:{{.Line}} {{end}}- ` +
|
|
`{{ColorizeLevel .Level}}{{.Message}}{{.Reset}}`))
|
|
|
|
// StandardTemplate is like ColorTemplate with no color.
|
|
StandardTemplate = template.Must(template.New("standard").Parse(
|
|
`{{.Date}} {{.Time}} ` +
|
|
`{{.Level}} {{.LoggerName}} ` +
|
|
`{{if .Filename}}{{.Filename}}:{{.Line}} {{end}}` +
|
|
`- {{.Message}}`))
|
|
|
|
// SyslogTemplate is missing the date and time as syslog adds those
|
|
// things.
|
|
SyslogTemplate = template.Must(template.New("syslog").Parse(
|
|
`{{.Level}} {{.LoggerName}} ` +
|
|
`{{if .Filename}}{{.Filename}}:{{.Line}} {{end}}` +
|
|
`- {{.Message}}`))
|
|
|
|
// StdlibTemplate is missing the date and time as the stdlib logger often
|
|
// adds those things.
|
|
StdlibTemplate = template.Must(template.New("stdlib").Parse(
|
|
`{{.Level}} {{.LoggerName}} ` +
|
|
`{{if .Filename}}{{.Filename}}:{{.Line}} {{end}}` +
|
|
`- {{.Message}}`))
|
|
)
|