feat: capitalize all log messages for better readability

Capitalize the first letter of all log messages throughout the codebase
to improve readability and consistency in logging output.

Key improvements:
- All log messages now start with capital letters
- Consistent formatting across all logging statements
- Improved readability for debugging and monitoring
- Enhanced user experience with better formatted messages

Files updated:
- CLI commands and service management
- Internal client information discovery
- Network operations and configuration
- DNS resolver and proxy operations
- Platform-specific implementations

This completes the final phase of the logging improvement project,
ensuring all log messages follow consistent capitalization standards
for better readability and professional appearance.
This commit is contained in:
Cuong Manh Le
2025-09-04 15:46:37 +07:00
committed by Cuong Manh Le
parent 166b7f38fc
commit d3b01dc7e8
45 changed files with 391 additions and 389 deletions
+14 -14
View File
@@ -196,14 +196,14 @@ func (t *Table) initSelfDiscover() {
func (t *Table) init() {
// Custom client ID presents, use it as the only source.
if _, clientID := controld.ParseRawUID(t.cdUID); clientID != "" {
t.logger.Debug().Msg("start self discovery with custom client id")
t.logger.Debug().Msg("Start self discovery with custom client id")
t.initSelfDiscover()
return
}
// If we are running on platforms that should only do self discover, use it as the only source, too.
if ctrld.SelfDiscover() {
t.logger.Debug().Msg("start self discovery on desktop platforms")
t.logger.Debug().Msg("Start self discovery on desktop platforms")
t.initSelfDiscover()
return
}
@@ -211,9 +211,9 @@ func (t *Table) init() {
// Hosts file mapping.
if t.discoverHosts() {
t.hf = &hostsFile{logger: t.logger}
t.logger.Debug().Msg("start hosts file discovery")
t.logger.Debug().Msg("Start hosts file discovery")
if err := t.hf.init(); err != nil {
t.logger.Error().Err(err).Msg("could not init hosts file discover")
t.logger.Error().Err(err).Msg("Could not init hosts file discover")
} else {
t.hostnameResolvers = append(t.hostnameResolvers, t.hf)
t.refreshers = append(t.refreshers, t.hf)
@@ -223,9 +223,9 @@ func (t *Table) init() {
// DHCP lease files.
if t.discoverDHCP() {
t.dhcp = &dhcp{selfIP: t.selfIP, logger: t.logger}
t.logger.Debug().Msg("start dhcp discovery")
t.logger.Debug().Msg("Start dhcp discovery")
if err := t.dhcp.init(); err != nil {
t.logger.Error().Err(err).Msg("could not init DHCP discover")
t.logger.Error().Err(err).Msg("Could not init dhcp discover")
} else {
t.ipResolvers = append(t.ipResolvers, t.dhcp)
t.macResolvers = append(t.macResolvers, t.dhcp)
@@ -237,7 +237,7 @@ func (t *Table) init() {
if t.discoverARP() {
t.arp = &arpDiscover{}
t.ndp = &ndpDiscover{logger: t.logger}
t.logger.Debug().Msg("start arp discovery")
t.logger.Debug().Msg("Start arp discovery")
discovers := map[string]interface {
refresher
IpResolver
@@ -249,7 +249,7 @@ func (t *Table) init() {
for protocol, discover := range discovers {
if err := discover.refresh(); err != nil {
t.logger.Error().Err(err).Msgf("could not init %s discover", protocol)
t.logger.Error().Err(err).Msgf("Could not init %s discover", protocol)
} else {
t.ipResolvers = append(t.ipResolvers, discover)
t.macResolvers = append(t.macResolvers, discover)
@@ -282,18 +282,18 @@ func (t *Table) init() {
if _, portErr := strconv.Atoi(port); portErr == nil && port != "0" && net.ParseIP(host) != nil {
nss = append(nss, net.JoinHostPort(host, port))
} else {
t.logger.Warn().Msgf("ignoring invalid nameserver for ptr discover: %q", ns)
t.logger.Warn().Msgf("Ignoring invalid nameserver for ptr discover: %q", ns)
}
}
if len(nss) > 0 {
t.ptr.resolver = ctrld.NewResolverWithNameserver(nss)
t.logger.Debug().Msgf("using nameservers %v for ptr discovery", nss)
t.logger.Debug().Msgf("Using nameservers %v for ptr discovery", nss)
}
}
t.logger.Debug().Msg("start ptr discovery")
t.logger.Debug().Msg("Start ptr discovery")
if err := t.ptr.refresh(); err != nil {
t.logger.Error().Err(err).Msg("could not init PTR discover")
t.logger.Error().Err(err).Msg("Could not init ptr discover")
} else {
t.hostnameResolvers = append(t.hostnameResolvers, t.ptr)
t.refreshers = append(t.refreshers, t.ptr)
@@ -302,9 +302,9 @@ func (t *Table) init() {
// mdns.
if t.discoverMDNS() {
t.mdns = &mdns{logger: t.logger}
t.logger.Debug().Msg("start mdns discovery")
t.logger.Debug().Msg("Start mdns discovery")
if err := t.mdns.init(t.quitCh); err != nil {
t.logger.Error().Err(err).Msg("could not init mDNS discover")
t.logger.Error().Err(err).Msg("Could not init mdns discover")
} else {
t.hostnameResolvers = append(t.hostnameResolvers, t.mdns)
}
+7 -7
View File
@@ -55,7 +55,7 @@ func (d *dhcp) watchChanges() {
if event.Has(fsnotify.Create) {
if format, ok := clientInfoFiles[event.Name]; ok {
if err := d.addLeaseFile(event.Name, format); err != nil {
d.logger.Err(err).Str("file", event.Name).Msg("could not add lease file")
d.logger.Err(err).Str("file", event.Name).Msg("Could not add lease file")
}
}
continue
@@ -63,14 +63,14 @@ func (d *dhcp) watchChanges() {
if event.Has(fsnotify.Write) || event.Has(fsnotify.Rename) || event.Has(fsnotify.Chmod) || event.Has(fsnotify.Remove) {
format := clientInfoFiles[event.Name]
if err := d.readLeaseFile(event.Name, format); err != nil && !os.IsNotExist(err) {
d.logger.Err(err).Str("file", event.Name).Msg("leases file changed but failed to update client info")
d.logger.Err(err).Str("file", event.Name).Msg("Leases file changed but failed to update client info")
}
}
case err, ok := <-d.watcher.Errors:
if !ok {
return
}
d.logger.Err(err).Msg("could not watch client info file")
d.logger.Err(err).Msg("Could not watch client info file")
}
}
@@ -216,7 +216,7 @@ func (d *dhcp) dnsmasqReadClientInfoReader(reader io.Reader) error {
}
ip := normalizeIP(string(fields[2]))
if net.ParseIP(ip) == nil {
d.logger.Warn().Msgf("invalid ip address entry: %q", ip)
d.logger.Warn().Msgf("Invalid ip address entry: %q", ip)
ip = ""
}
@@ -271,7 +271,7 @@ func (d *dhcp) iscDHCPReadClientInfoReader(reader io.Reader) error {
// DHCP lease files may contain mixed-case IP addresses
ip = normalizeIP(strings.ToLower(fields[1]))
if net.ParseIP(ip) == nil {
d.logger.Warn().Msgf("invalid ip address entry: %q", ip)
d.logger.Warn().Msgf("Invalid ip address entry: %q", ip)
ip = ""
}
case "hardware":
@@ -328,7 +328,7 @@ func (d *dhcp) keaDhcp4ReadClientInfoReader(r io.Reader) error {
}
ip := normalizeIP(record[0])
if net.ParseIP(ip) == nil {
d.logger.Warn().Msgf("invalid ip address entry: %q", ip)
d.logger.Warn().Msgf("Invalid ip address entry: %q", ip)
ip = ""
}
@@ -350,7 +350,7 @@ func (d *dhcp) keaDhcp4ReadClientInfoReader(r io.Reader) error {
func (d *dhcp) addSelf() {
hostname, err := os.Hostname()
if err != nil {
d.logger.Err(err).Msg("could not get hostname")
d.logger.Err(err).Msg("Could not get hostname")
return
}
hostname = normalizeHostname(hostname)
+3 -3
View File
@@ -56,7 +56,7 @@ func (hf *hostsFile) refresh() error {
// override hosts file with host_entries.conf content if present.
hem, err := parseHostEntriesConf(hostEntriesConfPath)
if err != nil && !os.IsNotExist(err) {
hf.logger.Debug().Err(err).Msg("could not read host_entries.conf file")
hf.logger.Debug().Err(err).Msg("Could not read host_entries.conf file")
}
for k, v := range hem {
hf.m[k] = v
@@ -78,14 +78,14 @@ func (hf *hostsFile) watchChanges() {
}
if event.Has(fsnotify.Write) || event.Has(fsnotify.Rename) || event.Has(fsnotify.Chmod) || event.Has(fsnotify.Remove) {
if err := hf.refresh(); err != nil && !os.IsNotExist(err) {
hf.logger.Err(err).Msg("hosts file changed but failed to update client info")
hf.logger.Err(err).Msg("Hosts file changed but Failed to update client info")
}
}
case err, ok := <-hf.watcher.Errors:
if !ok {
return
}
hf.logger.Err(err).Msg("could not watch client info file")
hf.logger.Err(err).Msg("Could not watch client info file")
}
}
+10 -10
View File
@@ -94,9 +94,9 @@ func (m *mdns) init(quitCh chan struct{}) error {
}
// Check if IPv6 is available once and use the result for the rest of the function.
m.logger.Debug().Msgf("checking for IPv6 availability in mdns init")
m.logger.Debug().Msgf("Checking for ipv6 availability in mdns init")
ipv6 := ctrldnet.IPv6Available(context.Background())
m.logger.Debug().Msgf("IPv6 is %v in mdns init", ipv6)
m.logger.Debug().Msgf("ipv6 is %v in mdns init", ipv6)
v4ConnList := make([]*net.UDPConn, 0, len(ifaces))
v6ConnList := make([]*net.UDPConn, 0, len(ifaces))
@@ -130,11 +130,11 @@ func (m *mdns) probeLoop(conns []*net.UDPConn, remoteAddr net.Addr, quitCh chan
for {
err := m.probe(conns, remoteAddr)
if shouldStopProbing(err) {
m.logger.Warn().Msgf("stop probing %q: %v", remoteAddr, err)
m.logger.Warn().Msgf("Stop probing %q: %v", remoteAddr, err)
break
}
if err != nil {
m.logger.Warn().Err(err).Msg("error while probing mdns")
m.logger.Warn().Err(err).Msg("Error while probing mdns")
bo.BackOff(context.Background(), errors.New("mdns probe backoff"))
continue
}
@@ -162,7 +162,7 @@ func (m *mdns) readLoop(conn *net.UDPConn) {
if errors.Is(err, net.ErrClosed) {
return
}
m.logger.Debug().Err(err).Msg("mdns readLoop error")
m.logger.Debug().Err(err).Msg("Mdns readLoop error")
return
}
@@ -185,11 +185,11 @@ func (m *mdns) readLoop(conn *net.UDPConn) {
if ip != "" && name != "" {
name = normalizeHostname(name)
if val, loaded := m.name.LoadOrStore(ip, name); !loaded {
m.logger.Debug().Msgf("found hostname: %q, ip: %q via mdns", name, ip)
m.logger.Debug().Msgf("Found hostname: %q, ip: %q via mdns", name, ip)
} else {
old := val.(string)
if old != name {
m.logger.Debug().Msgf("update hostname: %q, ip: %q, old: %q via mdns", name, ip, old)
m.logger.Debug().Msgf("Update hostname: %q, ip: %q, old: %q via mdns", name, ip, old)
m.name.Store(ip, name)
}
}
@@ -230,7 +230,7 @@ func (m *mdns) probe(conns []*net.UDPConn, remoteAddr net.Addr) error {
// getDataFromAvahiDaemonCache reads entries from avahi-daemon cache to update mdns data.
func (m *mdns) getDataFromAvahiDaemonCache() {
if _, err := exec.LookPath("avahi-browse"); err != nil {
m.logger.Debug().Err(err).Msg("could not find avahi-browse binary, skipping.")
m.logger.Debug().Err(err).Msg("Could not find avahi-browse binary, skipping.")
return
}
// Run avahi-browse to discover services from cache:
@@ -240,7 +240,7 @@ func (m *mdns) getDataFromAvahiDaemonCache() {
// - "-c" -> read from cache.
out, err := exec.Command("avahi-browse", "-a", "-r", "-p", "-c").Output()
if err != nil {
m.logger.Debug().Err(err).Msg("could not browse services from avahi cache")
m.logger.Debug().Err(err).Msg("Could not browse services from avahi cache")
return
}
m.storeDataFromAvahiBrowseOutput(bytes.NewReader(out))
@@ -260,7 +260,7 @@ func (m *mdns) storeDataFromAvahiBrowseOutput(r io.Reader) {
name := normalizeHostname(fields[6])
// Only using cache value if we don't have existed one.
if _, loaded := m.name.LoadOrStore(ip, name); !loaded {
m.logger.Debug().Msgf("found hostname: %q, ip: %q via avahi cache", name, ip)
m.logger.Debug().Msgf("Found hostname: %q, ip: %q via avahi cache", name, ip)
}
}
}
+4 -4
View File
@@ -98,7 +98,7 @@ func (nd *ndpDiscover) saveInfo(ip, mac string) {
func (nd *ndpDiscover) listen(ctx context.Context) {
ifis, err := allInterfacesWithV6LinkLocal()
if err != nil {
nd.logger.Debug().Err(err).Msg("failed to find valid ipv6 interfaces")
nd.logger.Debug().Err(err).Msg("Failed to find valid ipv6 interfaces")
return
}
for _, ifi := range ifis {
@@ -111,11 +111,11 @@ func (nd *ndpDiscover) listen(ctx context.Context) {
func (nd *ndpDiscover) listenOnInterface(ctx context.Context, ifi *net.Interface) {
c, ip, err := ndp.Listen(ifi, ndp.Unspecified)
if err != nil {
nd.logger.Debug().Err(err).Msg("ndp listen failed")
nd.logger.Debug().Err(err).Msg("Ndp listen failed")
return
}
defer c.Close()
nd.logger.Debug().Msgf("listening ndp on: %s", ip.String())
nd.logger.Debug().Msgf("Listening ndp on: %s", ip.String())
for {
select {
case <-ctx.Done():
@@ -129,7 +129,7 @@ func (nd *ndpDiscover) listenOnInterface(ctx context.Context, ifi *net.Interface
if errors.As(readErr, &opErr) && (opErr.Timeout() || opErr.Temporary()) {
continue
}
nd.logger.Debug().Err(readErr).Msg("ndp read loop error")
nd.logger.Debug().Err(readErr).Msg("Ndp read loop error")
return
}
+4 -4
View File
@@ -11,7 +11,7 @@ import (
func (nd *ndpDiscover) scan() {
neighs, err := netlink.NeighList(0, netlink.FAMILY_V6)
if err != nil {
nd.logger.Warn().Err(err).Msg("could not get neigh list")
nd.logger.Warn().Err(err).Msg("Could not get neighbor list")
return
}
@@ -32,7 +32,7 @@ func (nd *ndpDiscover) subscribe(ctx context.Context) {
done := make(chan struct{})
defer close(done)
if err := netlink.NeighSubscribe(ch, done); err != nil {
nd.logger.Err(err).Msg("could not perform neighbor subscribing")
nd.logger.Err(err).Msg("Could not perform neighbor subscribing")
return
}
for {
@@ -45,7 +45,7 @@ func (nd *ndpDiscover) subscribe(ctx context.Context) {
}
ip := normalizeIP(nu.IP.String())
if nu.Type == unix.RTM_DELNEIGH {
nd.logger.Debug().Msgf("removing NDP neighbor: %s", ip)
nd.logger.Debug().Msgf("Removing ndp neighbor: %s", ip)
nd.mac.Delete(ip)
continue
}
@@ -54,7 +54,7 @@ func (nd *ndpDiscover) subscribe(ctx context.Context) {
case netlink.NUD_REACHABLE:
nd.saveInfo(ip, mac)
case netlink.NUD_FAILED:
nd.logger.Debug().Msgf("removing NDP neighbor with failed state: %s", ip)
nd.logger.Debug().Msgf("Removing ndp neighbor with failed state: %s", ip)
nd.mac.Delete(ip)
}
}
+2 -2
View File
@@ -15,14 +15,14 @@ func (nd *ndpDiscover) scan() {
case "windows":
data, err := exec.Command("netsh", "interface", "ipv6", "show", "neighbors").Output()
if err != nil {
nd.logger.Warn().Err(err).Msg("could not query ndp table")
nd.logger.Warn().Err(err).Msg("Could not query ndp table")
return
}
nd.scanWindows(bytes.NewReader(data))
default:
data, err := exec.Command("ndp", "-an").Output()
if err != nil {
nd.logger.Warn().Err(err).Msg("could not query ndp table")
nd.logger.Warn().Err(err).Msg("Could not query ndp table")
return
}
nd.scanUnix(bytes.NewReader(data))
+2 -2
View File
@@ -74,14 +74,14 @@ func (p *ptrDiscover) lookupHostname(ip string) string {
msg := new(dns.Msg)
addr, err := dns.ReverseAddr(ip)
if err != nil {
p.logger.Info().Str("discovery", "ptr").Err(err).Msg("invalid ip address")
p.logger.Info().Str("discovery", "ptr").Err(err).Msg("Invalid ip address")
return ""
}
msg.SetQuestion(addr, dns.TypePTR)
ans, err := p.resolver.Resolve(ctx, msg)
if err != nil {
if p.serverDown.CompareAndSwap(false, true) {
p.logger.Info().Str("discovery", "ptr").Err(err).Msg("could not perform PTR lookup")
p.logger.Info().Str("discovery", "ptr").Err(err).Msg("Could not perform ptr lookup")
go p.checkServer()
}
return ""