mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-20 16:23:53 +01:00
feat(monitor): add display name support for health monitor logging
Add a DisplayNameKey struct to pass display names from routes through the task parent hierarchy to the health monitor. This allows the health monitor to use more descriptive names for logging instead of internal task names. BREAKING CHANGE: The monitor.DisplayNameKey struct is now part of the public API
This commit is contained in:
@@ -21,6 +21,8 @@ import (
|
||||
)
|
||||
|
||||
type (
|
||||
DisplayNameKey struct{}
|
||||
|
||||
HealthCheckFunc func(url *url.URL) (result types.HealthCheckResult, err error)
|
||||
monitor struct {
|
||||
service string
|
||||
@@ -85,9 +87,13 @@ func (mon *monitor) Start(parent task.Parent) error {
|
||||
return ErrNegativeInterval
|
||||
}
|
||||
|
||||
mon.service = parent.Name()
|
||||
mon.task = parent.Subtask("health_monitor", true)
|
||||
|
||||
mon.service = parent.Name()
|
||||
if displayName, ok := parent.GetValue(DisplayNameKey{}).(string); ok {
|
||||
mon.service = displayName
|
||||
}
|
||||
|
||||
go func() {
|
||||
logger := log.With().Str("name", mon.service).Logger()
|
||||
|
||||
|
||||
@@ -80,6 +80,7 @@ func NewFileServer(base *Route) (*FileServer, error) {
|
||||
// Start implements task.TaskStarter.
|
||||
func (s *FileServer) Start(parent task.Parent) error {
|
||||
s.task = parent.Subtask("fileserver."+s.Name(), false)
|
||||
s.task.SetValue(monitor.DisplayNameKey{}, s.DisplayName())
|
||||
|
||||
pathPatterns := s.PathPatterns
|
||||
switch {
|
||||
|
||||
@@ -126,6 +126,7 @@ func (r *ReveseProxyRoute) ReverseProxy() *reverseproxy.ReverseProxy {
|
||||
// Start implements task.TaskStarter.
|
||||
func (r *ReveseProxyRoute) Start(parent task.Parent) error {
|
||||
r.task = parent.Subtask("http."+r.Name(), false)
|
||||
r.task.SetValue(monitor.DisplayNameKey{}, r.DisplayName())
|
||||
|
||||
switch {
|
||||
case r.UseIdleWatcher():
|
||||
|
||||
@@ -514,6 +514,7 @@ func (r *Route) start(parent task.Parent) error {
|
||||
}
|
||||
|
||||
r.task = parent.Subtask("excluded."+r.Name(), false)
|
||||
r.task.SetValue(monitor.DisplayNameKey{}, r.DisplayName())
|
||||
ep.ExcludedRoutes().Add(r.impl)
|
||||
r.task.OnCancel("remove_route_from_excluded", func() {
|
||||
ep.ExcludedRoutes().Del(r.impl)
|
||||
|
||||
@@ -47,6 +47,7 @@ func (r *StreamRoute) Start(parent task.Parent) error {
|
||||
r.stream = stream
|
||||
|
||||
r.task = parent.Subtask("stream."+r.Name(), !r.ShouldExclude())
|
||||
r.task.SetValue(monitor.DisplayNameKey{}, r.DisplayName())
|
||||
|
||||
switch {
|
||||
case r.UseIdleWatcher():
|
||||
|
||||
Reference in New Issue
Block a user