40 lines
861 B
Go
40 lines
861 B
Go
|
package logging
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"os"
|
||
|
"strings"
|
||
|
|
||
|
log "github.com/hashicorp/go-hclog"
|
||
|
)
|
||
|
|
||
|
// NewVaultLogger creates a new logger with the specified level and a Vault
|
||
|
// formatter
|
||
|
func NewVaultLogger(level log.Level) log.Logger {
|
||
|
return NewVaultLoggerWithWriter(log.DefaultOutput, level)
|
||
|
}
|
||
|
|
||
|
// NewVaultLoggerWithWriter creates a new logger with the specified level and
|
||
|
// writer and a Vault formatter
|
||
|
func NewVaultLoggerWithWriter(w io.Writer, level log.Level) log.Logger {
|
||
|
opts := &log.LoggerOptions{
|
||
|
Level: level,
|
||
|
Output: w,
|
||
|
JSONFormat: useJson(),
|
||
|
}
|
||
|
return log.New(opts)
|
||
|
}
|
||
|
|
||
|
func useJson() bool {
|
||
|
logFormat := os.Getenv("VAULT_LOG_FORMAT")
|
||
|
if logFormat == "" {
|
||
|
logFormat = os.Getenv("LOGXI_FORMAT")
|
||
|
}
|
||
|
switch strings.ToLower(logFormat) {
|
||
|
case "json", "vault_json", "vault-json", "vaultjson":
|
||
|
return true
|
||
|
default:
|
||
|
return false
|
||
|
}
|
||
|
}
|