github.com/hashicorp/vault/sdk@v0.13.0/plugin/logger.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package plugin 5 6 import hclog "github.com/hashicorp/go-hclog" 7 8 type LoggerServer struct { 9 logger hclog.Logger 10 } 11 12 func (l *LoggerServer) Trace(args *LoggerArgs, _ *struct{}) error { 13 l.logger.Trace(args.Msg, args.Args...) 14 return nil 15 } 16 17 func (l *LoggerServer) Debug(args *LoggerArgs, _ *struct{}) error { 18 l.logger.Debug(args.Msg, args.Args...) 19 return nil 20 } 21 22 func (l *LoggerServer) Info(args *LoggerArgs, _ *struct{}) error { 23 l.logger.Info(args.Msg, args.Args...) 24 return nil 25 } 26 27 func (l *LoggerServer) Warn(args *LoggerArgs, reply *LoggerReply) error { 28 l.logger.Warn(args.Msg, args.Args...) 29 return nil 30 } 31 32 func (l *LoggerServer) Error(args *LoggerArgs, reply *LoggerReply) error { 33 l.logger.Error(args.Msg, args.Args...) 34 return nil 35 } 36 37 func (l *LoggerServer) Log(args *LoggerArgs, _ *struct{}) error { 38 switch translateLevel(args.Level) { 39 40 case hclog.Trace: 41 l.logger.Trace(args.Msg, args.Args...) 42 43 case hclog.Debug: 44 l.logger.Debug(args.Msg, args.Args...) 45 46 case hclog.Info: 47 l.logger.Info(args.Msg, args.Args...) 48 49 case hclog.Warn: 50 l.logger.Warn(args.Msg, args.Args...) 51 52 case hclog.Error: 53 l.logger.Error(args.Msg, args.Args...) 54 55 case hclog.NoLevel: 56 } 57 return nil 58 } 59 60 func (l *LoggerServer) SetLevel(args int, _ *struct{}) error { 61 level := translateLevel(args) 62 l.logger = hclog.New(&hclog.LoggerOptions{Level: level}) 63 return nil 64 } 65 66 func (l *LoggerServer) IsTrace(args interface{}, reply *LoggerReply) error { 67 result := l.logger.IsTrace() 68 *reply = LoggerReply{ 69 IsTrue: result, 70 } 71 return nil 72 } 73 74 func (l *LoggerServer) IsDebug(args interface{}, reply *LoggerReply) error { 75 result := l.logger.IsDebug() 76 *reply = LoggerReply{ 77 IsTrue: result, 78 } 79 return nil 80 } 81 82 func (l *LoggerServer) IsInfo(args interface{}, reply *LoggerReply) error { 83 result := l.logger.IsInfo() 84 *reply = LoggerReply{ 85 IsTrue: result, 86 } 87 return nil 88 } 89 90 func (l *LoggerServer) IsWarn(args interface{}, reply *LoggerReply) error { 91 result := l.logger.IsWarn() 92 *reply = LoggerReply{ 93 IsTrue: result, 94 } 95 return nil 96 } 97 98 type LoggerArgs struct { 99 Level int 100 Msg string 101 Args []interface{} 102 } 103 104 // LoggerReply contains the RPC reply. Not all fields may be used 105 // for a particular RPC call. 106 type LoggerReply struct { 107 IsTrue bool 108 Error error 109 } 110 111 func translateLevel(logxiLevel int) hclog.Level { 112 switch logxiLevel { 113 114 case 1000, 10: 115 // logxi.LevelAll, logxi.LevelTrace: 116 return hclog.Trace 117 118 case 7: 119 // logxi.LevelDebug: 120 return hclog.Debug 121 122 case 6, 5: 123 // logxi.LevelInfo, logxi.LevelNotice: 124 return hclog.Info 125 126 case 4: 127 // logxi.LevelWarn: 128 return hclog.Warn 129 130 case 3, 2, 1, -1: 131 // logxi.LevelError, logxi.LevelFatal, logxi.LevelAlert, logxi.LevelEmergency: 132 return hclog.Error 133 } 134 return hclog.NoLevel 135 }