summaryrefslogtreecommitdiff
path: root/modules/logging
diff options
context:
space:
mode:
authorFrancis Lavoie <lavofr@gmail.com>2022-04-28 11:38:44 -0400
committerGitHub <noreply@github.com>2022-04-28 11:38:44 -0400
commit0be3d995439245e8b4069fd3bddcd4b8ef9194d4 (patch)
treee1b637118906014c73ef58dd4cba36ce04f4da4e /modules/logging
parent3017b245c9275f910dff472ee5e7729625c4f913 (diff)
logging: Implement rename filter, changes field key names (#4745)
Diffstat (limited to 'modules/logging')
-rw-r--r--modules/logging/filters.go38
1 files changed, 37 insertions, 1 deletions
diff --git a/modules/logging/filters.go b/modules/logging/filters.go
index af64cc4..aa96e5e 100644
--- a/modules/logging/filters.go
+++ b/modules/logging/filters.go
@@ -31,12 +31,13 @@ import (
func init() {
caddy.RegisterModule(DeleteFilter{})
+ caddy.RegisterModule(HashFilter{})
caddy.RegisterModule(ReplaceFilter{})
caddy.RegisterModule(IPMaskFilter{})
caddy.RegisterModule(QueryFilter{})
caddy.RegisterModule(CookieFilter{})
caddy.RegisterModule(RegexpFilter{})
- caddy.RegisterModule(HashFilter{})
+ caddy.RegisterModule(RenameFilter{})
}
// LogFieldFilter can filter (or manipulate)
@@ -542,21 +543,56 @@ func (f *RegexpFilter) Filter(in zapcore.Field) zapcore.Field {
return in
}
+// RenameFilter is a Caddy log field filter that
+// renames the field's key with the indicated name.
+type RenameFilter struct {
+ Name string `json:"name,omitempty"`
+}
+
+// CaddyModule returns the Caddy module information.
+func (RenameFilter) CaddyModule() caddy.ModuleInfo {
+ return caddy.ModuleInfo{
+ ID: "caddy.logging.encoders.filter.rename",
+ New: func() caddy.Module { return new(RenameFilter) },
+ }
+}
+
+// UnmarshalCaddyfile sets up the module from Caddyfile tokens.
+func (f *RenameFilter) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
+ for d.Next() {
+ if d.NextArg() {
+ f.Name = d.Val()
+ }
+ }
+ return nil
+}
+
+// Filter renames the input field with the replacement name.
+func (f *RenameFilter) Filter(in zapcore.Field) zapcore.Field {
+ in.Type = zapcore.StringType
+ in.Key = f.Name
+ return in
+}
+
// Interface guards
var (
_ LogFieldFilter = (*DeleteFilter)(nil)
+ _ LogFieldFilter = (*HashFilter)(nil)
_ LogFieldFilter = (*ReplaceFilter)(nil)
_ LogFieldFilter = (*IPMaskFilter)(nil)
_ LogFieldFilter = (*QueryFilter)(nil)
_ LogFieldFilter = (*CookieFilter)(nil)
_ LogFieldFilter = (*RegexpFilter)(nil)
+ _ LogFieldFilter = (*RenameFilter)(nil)
_ caddyfile.Unmarshaler = (*DeleteFilter)(nil)
+ _ caddyfile.Unmarshaler = (*HashFilter)(nil)
_ caddyfile.Unmarshaler = (*ReplaceFilter)(nil)
_ caddyfile.Unmarshaler = (*IPMaskFilter)(nil)
_ caddyfile.Unmarshaler = (*QueryFilter)(nil)
_ caddyfile.Unmarshaler = (*CookieFilter)(nil)
_ caddyfile.Unmarshaler = (*RegexpFilter)(nil)
+ _ caddyfile.Unmarshaler = (*RenameFilter)(nil)
_ caddy.Provisioner = (*IPMaskFilter)(nil)
_ caddy.Provisioner = (*RegexpFilter)(nil)