# Session 04: Logging, Signals & Services

## Summary

Logging infrastructure, OS signal handling (Unix/Windows/WASM), and Windows service management. Small session — good opportunity to also address platform-specific abstractions.

## Scope

| Go File | Features | Feature IDs | Go LOC |
|---------|----------|-------------|--------|
| server/log.go | 18 | 2050–2067 | 207 |
| server/signal.go | 5 | 3155–3159 | 156 |
| server/signal_wasm.go | 2 | 3160–3161 | 6 |
| server/signal_windows.go | 2 | 3162–3163 | 79 |
| server/service.go | 2 | 3148–3149 | 7 |
| server/service_windows.go | 5 | 3150–3154 | 79 |
| **Total** | **34** | | **534** |

## .NET Classes

- `NatsLogger` (or logging integration) — server logging wrapper
- `SignalHandler` — OS signal handling (SIGTERM, SIGHUP, etc.)
- `ServiceManager` — Windows service lifecycle

## Test Files

| Test File | Tests | Test IDs |
|-----------|-------|----------|
| server/log_test.go | 6 | 2017–2022 |
| server/signal_test.go | 19 | 2910–2928 |
| server/service_test.go | 1 | 2908 |
| server/service_windows_test.go | 1 | 2909 |
| **Total** | **27** | |

## Dependencies

- Session 01 (Foundation Types)

## .NET Target Location

- `dotnet/src/ZB.MOM.NatsNet.Server/Internal/` (logging)
- `dotnet/src/ZB.MOM.NatsNet.Server.Host/` (signal/service)

## Notes

- .NET uses `Microsoft.Extensions.Logging` + Serilog per standards
- Windows service support maps to `Microsoft.Extensions.Hosting.WindowsServices`
- Signal handling maps to `Console.CancelKeyPress` + `AppDomain.ProcessExit`
