Add config option to suppress unknown device type messages

Adds log_unknown_types config option (default: false) to control logging
of unknown UniFi device types. When disabled (default), unknown devices
are silently ignored to reduce log volume. When enabled, they are logged
as DEBUG messages instead of ERROR. Addresses issue #912.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Cody Lee
2026-01-25 11:24:33 -06:00
parent 2c20013ac6
commit 07781214c3
8 changed files with 29 additions and 6 deletions

View File

@@ -7,6 +7,10 @@
[poller] [poller]
debug = false debug = false
quiet = false quiet = false
# log_unknown_types = false # Set to true to log unknown device types as DEBUG messages.
# By default, newer UniFi device types that aren't recognized
# are silently ignored to reduce log volume. Enable this when
# debugging or reporting new device types to developers.
[unifi] [unifi]
remote = true remote = true

View File

@@ -7,6 +7,10 @@
poller: poller:
debug: false debug: false
quiet: false quiet: false
# log_unknown_types: false # Set to true to log unknown device types as DEBUG messages.
# By default, newer UniFi device types that aren't recognized
# are silently ignored to reduce log volume. Enable this when
# debugging or reporting new device types to developers.
unifi: unifi:
# Enable remote API mode - automatically discovers all consoles # Enable remote API mode - automatically discovers all consoles

View File

@@ -11,6 +11,11 @@
# Recommend enabling debug with this setting for better error logging. # Recommend enabling debug with this setting for better error logging.
quiet = false quiet = false
# Log unknown device types as DEBUG messages. By default (false), newer UniFi
# device types that aren't recognized are silently ignored to reduce log volume.
# Enable this when debugging or reporting new device types to developers.
# log_unknown_types = false
# Load dynamic plugins. Advanced use; only sample mysql plugin provided by default. # Load dynamic plugins. Advanced use; only sample mysql plugin provided by default.
plugins = [] plugins = []

View File

@@ -2,7 +2,8 @@
"poller": { "poller": {
"debug": false, "debug": false,
"quiet": false, "quiet": false,
"plugins": [] "plugins": [],
"log_unknown_types": false
}, },
"prometheus": { "prometheus": {

View File

@@ -9,6 +9,10 @@ poller:
debug: false debug: false
quiet: false quiet: false
plugins: [] plugins: []
# log_unknown_types: false # Set to true to log unknown device types as DEBUG messages.
# By default, newer UniFi device types that aren't recognized
# are silently ignored to reduce log volume. Enable this when
# debugging or reporting new device types to developers.
prometheus: prometheus:
disable: false disable: false

View File

@@ -467,6 +467,8 @@ func (u *InfluxUnifi) switchExport(r report, v any) { //nolint:cyclop
case *unifi.SpeedTestResult: case *unifi.SpeedTestResult:
u.batchSpeedTest(r, v) u.batchSpeedTest(r, v)
default: default:
u.LogErrorf("invalid export type: %T", v) if u.Collector.Poller().LogUnknownTypes {
u.LogDebugf("unknown export type: %T", v)
}
} }
} }

View File

@@ -102,9 +102,10 @@ type Config struct {
// Poller is the global config values. // Poller is the global config values.
type Poller struct { type Poller struct {
Plugins []string `json:"plugins" toml:"plugins" xml:"plugin" yaml:"plugins"` Plugins []string `json:"plugins" toml:"plugins" xml:"plugin" yaml:"plugins"`
Debug bool `json:"debug" toml:"debug" xml:"debug,attr" yaml:"debug"` Debug bool `json:"debug" toml:"debug" xml:"debug,attr" yaml:"debug"`
Quiet bool `json:"quiet" toml:"quiet" xml:"quiet,attr" yaml:"quiet"` Quiet bool `json:"quiet" toml:"quiet" xml:"quiet,attr" yaml:"quiet"`
LogUnknownTypes bool `json:"log_unknown_types" toml:"log_unknown_types" xml:"log_unknown_types" yaml:"log_unknown_types"`
} }
// LoadPlugins reads-in dynamic shared libraries. // LoadPlugins reads-in dynamic shared libraries.

View File

@@ -452,6 +452,8 @@ func (u *promUnifi) switchExport(r report, v any) {
case *unifi.UsageByCountry: case *unifi.UsageByCountry:
u.exportCountryTraffic(r, v) u.exportCountryTraffic(r, v)
default: default:
u.LogErrorf("invalid type: %T", v) if u.Collector.Poller().LogUnknownTypes {
u.LogDebugf("unknown type: %T", v)
}
} }
} }