@@ -20,22 +20,24 @@ import (
2020
2121type (
2222 options struct {
23- l * logrus.Logger
24- level * logrus.Level
25- formatter logrus.Formatter
26- format string
27- reportCaller bool
28- exitFunc func (int )
29- leakSensitive bool
30- redactionText string
31- hooks []logrus.Hook
32- c configurator
23+ l * logrus.Logger
24+ level * logrus.Level
25+ formatter logrus.Formatter
26+ format string
27+ reportCaller bool
28+ exitFunc func (int )
29+ leakSensitive bool
30+ redactionText string
31+ redactableHTTPHeaders []string
32+ hooks []logrus.Hook
33+ c configurator
3334 }
3435 Option func (* options )
3536 nullConfigurator struct {}
3637 configurator interface {
3738 Bool (key string ) bool
3839 String (key string ) string
40+ Strings (key string ) []string
3941 }
4042)
4143
@@ -178,6 +180,12 @@ func RedactionText(text string) Option {
178180 }
179181}
180182
183+ func RedactableHTTPHeaders (headers []string ) Option {
184+ return func (o * options ) {
185+ o .redactableHTTPHeaders = headers
186+ }
187+ }
188+
181189func (c * nullConfigurator ) Bool (_ string ) bool {
182190 return false
183191}
@@ -186,6 +194,10 @@ func (c *nullConfigurator) String(_ string) string {
186194 return ""
187195}
188196
197+ func (c * nullConfigurator ) Strings (_ string ) []string {
198+ return []string {}
199+ }
200+
189201func newOptions (opts []Option ) * options {
190202 o := new (options )
191203 o .c = new (nullConfigurator )
@@ -199,11 +211,12 @@ func newOptions(opts []Option) *options {
199211func New (name string , version string , opts ... Option ) * Logger {
200212 o := newOptions (opts )
201213 return & Logger {
202- opts : opts ,
203- name : name ,
204- version : version ,
205- leakSensitive : o .leakSensitive || o .c .Bool ("log.leak_sensitive_values" ),
206- redactionText : stringsx .DefaultIfEmpty (o .redactionText , `Value is sensitive and has been redacted. To see the value set config key "log.leak_sensitive_values = true" or environment variable "LOG_LEAK_SENSITIVE_VALUES=true".` ),
214+ opts : opts ,
215+ name : name ,
216+ version : version ,
217+ leakSensitive : o .leakSensitive || o .c .Bool ("log.leak_sensitive_values" ),
218+ redactionText : stringsx .DefaultIfEmpty (o .redactionText , `Value is sensitive and has been redacted. To see the value set config key "log.leak_sensitive_values = true" or environment variable "LOG_LEAK_SENSITIVE_VALUES=true".` ),
219+ redactableHTTPHeaders : o .redactableHTTPHeaders ,
207220 Entry : newLogger (o .l , o ).WithFields (logrus.Fields {
208221 "audience" : "application" , "service_name" : name , "service_version" : version }),
209222 }
@@ -216,6 +229,11 @@ func NewAudit(name string, version string, opts ...Option) *Logger {
216229func (l * Logger ) UseConfig (c configurator ) {
217230 l .leakSensitive = l .leakSensitive || c .Bool ("log.leak_sensitive_values" )
218231 l .redactionText = stringsx .DefaultIfEmpty (c .String ("log.redaction_text" ), l .redactionText )
232+ r := c .Strings ("log.redactable_http_headers" )
233+ if len (r ) == 0 {
234+ r = l .redactableHTTPHeaders
235+ }
236+ l .redactableHTTPHeaders = r
219237 o := newOptions (append (l .opts , WithConfigurator (c )))
220238 setLevel (l .Entry .Logger , o )
221239 setFormatter (l .Entry .Logger , o )
0 commit comments