blob: 2a8b997f5e49445c714d6f5a6fb20046a85c5c17 [file] [log] [blame]
// -
// ========================LICENSE_START=================================
// Copyright (C) 2024: Deutsche Telecom
//
// 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.
// ========================LICENSE_END===================================
//
package log
import (
"github.com/sirupsen/logrus"
"gopkg.in/natefinch/lumberjack.v2"
"io"
"os"
"policy-opa-pdp/cfg"
"policy-opa-pdp/consts"
)
type Logger struct {
*logrus.Logger
}
var (
Log *Logger
)
func SetOutput(w io.Writer) {
Log.SetOutput(w)
}
func init() {
Log = InitLogger(consts.LogFilePath, consts.LogMaxSize, consts.LogMaxBackups, cfg.LogLevel)
}
func InitLogger(logFilePath string, logMaxSize int, logMaxBackups int, logLevel string) *Logger {
log := logrus.New()
log.SetLevel(logrus.DebugLevel)
log.SetOutput(os.Stdout)
logLevelParsed, err := logrus.ParseLevel(logLevel)
if err != nil {
log.Warn(err)
}
log.SetLevel(logLevelParsed)
logRotation := &lumberjack.Logger{
Filename: consts.LogFilePath,
MaxSize: consts.LogMaxSize,
MaxBackups: consts.LogMaxBackups,
}
multiWriter := io.MultiWriter(os.Stdout, logRotation)
log.SetOutput(multiWriter)
log.SetFormatter(&logrus.TextFormatter{
ForceColors: true,
DisableColors: false,
FullTimestamp: true,
TimestampFormat: "2006-01-02T15:04:05.0000-07:00",
})
log.Debugf("logger initialised Filepath = %s, Logsize(MB) = %d, Backups = %d, Loglevel = %s", logFilePath, logMaxSize, logMaxBackups, logLevel)
return &Logger{log}
}
func ParseLevel(level string) (logrus.Level, error) {
return logrus.ParseLevel(level)
}
func SetLevel(level logrus.Level) {
Log.SetLevel(level)
}
func Error(args ...interface{}) {
Log.Error(args...)
}
func Info(args ...interface{}) {
Log.Info(args...)
}
func Debug(args ...interface{}) {
Log.Debug(args...)
}
func Warn(args ...interface{}) {
Log.Warn(args...)
}
func Panic(args ...interface{}) {
Log.Panic(args...)
}
func Trace(args ...interface{}) {
Log.Trace(args...)
}
func Errorf(msg string, args ...interface{}) {
Log.Errorf(msg, args...)
}
func Infof(msg string, args ...interface{}) {
Log.Infof(msg, args...)
}
func Debugf(msg string, args ...interface{}) {
Log.Debugf(msg, args...)
}
func Warnf(msg string, args ...interface{}) {
Log.Warnf(msg, args...)
}
func Panicf(msg string, args ...interface{}) {
Log.Panicf(msg, args...)
}
func Tracef(msg string, args ...interface{}) {
Log.Tracef(msg, args...)
}