logging
napt.logging
Logging interface for NAPT.
This module provides a configurable logging interface that library modules can use for output without depending on the CLI. The logger can be configured globally or passed as a parameter for better isolation.
The logger supports five output levels:
- Step: Always printed (for progress indicators)
- Info: Always printed (for notable events that are not warnings)
- Warning: Always printed (for important warnings that users should see)
- Verbose: Only printed when verbose mode is enabled
- Debug: Only printed when debug mode is enabled (implies verbose)
Example
Configure global logger:
from napt.logging import get_logger, set_global_logger
logger = get_logger(verbose=True, debug=False)
set_global_logger(logger)
Use in library code:
from napt.logging import get_logger
logger = get_logger()
logger.step(1, 4, "Loading configuration...")
logger.info("PACKAGE", "Removing previous package: 144.0.0")
logger.warning("DETECTION", "Could not extract MSI metadata")
logger.verbose("STATE", "Loaded state from file")
logger.debug("VERSION", "Trying backend: msilib...")
Use with dependency injection:
def my_function(logger=None):
if logger is None:
logger = get_logger()
logger.verbose("MODULE", "Processing...")
Note
The default logger is silent (verbose=False, debug=False), so library functions won't print anything unless explicitly configured. The CLI configures the global logger when commands are executed.
Logger
Bases: Protocol
Protocol for logger implementations.
Source code in napt/logging.py
step
Print a step indicator for non-verbose mode.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
step
|
int
|
Current step number (1-based). |
required |
total
|
int
|
Total number of steps. |
required |
message
|
str
|
Step description. |
required |
info
Print an informational message (always visible).
Use for notable events that are not warnings — e.g., replacing a previous artifact, skipping a step for a known reason.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prefix
|
str
|
Message prefix (e.g., "PACKAGE", "BUILD"). |
required |
message
|
str
|
Informational message. |
required |
Source code in napt/logging.py
warning
Print a warning message (always visible).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prefix
|
str
|
Message prefix (e.g., "DETECTION", "BUILD"). |
required |
message
|
str
|
Warning message. |
required |
verbose
Print a verbose log message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prefix
|
str
|
Message prefix (e.g., "STATE", "BUILD"). |
required |
message
|
str
|
Log message. |
required |
debug
Print a debug log message.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prefix
|
str
|
Message prefix (e.g., "VERSION", "HTTP"). |
required |
message
|
str
|
Log message. |
required |
DefaultLogger
Default logger implementation that prints to stdout.
This logger respects verbose and debug flags and formats output consistently with the CLI output format.
Source code in napt/logging.py
__init__
Initialize logger with verbosity settings.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
verbose
|
bool
|
If True, print verbose messages. |
False
|
debug
|
bool
|
If True, print debug messages (implies verbose). |
False
|
Source code in napt/logging.py
step
info
warning
verbose
debug
SilentLogger
Logger that suppresses all output.
Useful for programmatic usage when output is not desired.
Source code in napt/logging.py
step
info
warning
verbose
get_logger
Get a logger instance with specified verbosity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
verbose
|
bool
|
If True, logger will print verbose messages. |
False
|
debug
|
bool
|
If True, logger will print debug messages (implies verbose). |
False
|
Returns:
| Type | Description |
|---|---|
Logger
|
A logger instance configured with the specified verbosity. |
Example
Get a verbose logger:
Get a debug logger:
Source code in napt/logging.py
get_global_logger
Get the global logger instance.
Returns:
| Type | Description |
|---|---|
Logger
|
The current global logger instance. |
Note
The default global logger is silent. Use set_global_logger() to configure it, or pass a logger instance directly to functions.
Source code in napt/logging.py
set_global_logger
Set the global logger instance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
logger
|
Logger
|
Logger instance to use as the global logger. |
required |
Example
Configure global logger from CLI:
Note
This affects all library functions that use get_logger() without passing a logger instance. For better isolation, pass logger instances directly to functions instead of using the global logger.