Skip to content

Commit 9358805

Browse files
committed
fix: log file configurable via env var, log error on permission issue
1 parent c1d0d62 commit 9358805

2 files changed

Lines changed: 16 additions & 13 deletions

File tree

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -324,11 +324,11 @@ index_html: |
324324
### Environment Variables
325325

326326
```bash
327-
LOG_LEVEL=DEBUG # Optional: DEBUG, INFO, WARNING, ERROR (default: DEBUG)
328-
LOG_FORMAT=json # Optional: "text" (default) or "json" for structured logging
329-
LOG_FILE=/var/log/app.log # Optional: Enable file logging to specified path (default: disabled, logs to stderr only)
330-
LISTEN_HOST=0.0.0.0 # Optional: Host to bind to (default: *)
331-
LISTEN_PORT=8000 # Optional: Port to listen on (default: 8000)
327+
LOG_LEVEL=DEBUG # Optional: DEBUG, INFO, WARNING, ERROR (default: DEBUG)
328+
LOG_FORMAT=json # Optional: "text" (default) or "json" for structured logging
329+
LOG_FILE=/var/log/app.log # Optional: Log file path (default: "log"), set to "false" to disable file logging
330+
LISTEN_HOST=0.0.0.0 # Optional: Host to bind to (default: *)
331+
LISTEN_PORT=8000 # Optional: Port to listen on (default: 8000)
332332
```
333333

334334
When `LOG_FORMAT=json` is set, all logs (application and uvicorn access logs) will be output in JSON format.

powerdns_api_proxy/logging.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,16 @@ def audit(
9999
logger: AuditLogger = logging.getLogger("powerdns_api_proxy") # type: ignore
100100
logger.addHandler(default_stream_handler)
101101

102-
LOG_FILE = getenv("LOG_FILE")
103-
if LOG_FILE:
104-
file_handler = logging.handlers.RotatingFileHandler(
105-
filename=LOG_FILE, maxBytes=1000**2 * 100, backupCount=5
106-
)
107-
file_handler.setLevel("DEBUG")
108-
file_handler.setFormatter(default_formatter)
109-
logger.addHandler(file_handler)
102+
LOG_FILE = getenv("LOG_FILE", "log")
103+
if LOG_FILE and LOG_FILE.lower() != "false":
104+
try:
105+
file_handler = logging.handlers.RotatingFileHandler(
106+
filename=LOG_FILE, maxBytes=1000**2 * 100, backupCount=5
107+
)
108+
file_handler.setLevel(LOG_LEVEL)
109+
file_handler.setFormatter(default_formatter)
110+
logger.addHandler(file_handler)
111+
except OSError as e:
112+
logger.error(f"Failed to enable file logging to {LOG_FILE}: {e}")
110113

111114
logger.setLevel("DEBUG")

0 commit comments

Comments
 (0)