Introduction¶
Python module to gracefully handle a .config file/environment variables for scripts, with built in masking for sensitive options. Provides a Splunk friendly formatted logger instance.
Usage¶
Setting a config file¶
The main functionality of panaetius is using a config file to store variables.
Your config.toml can be created and found in ~/.config/__header__/config.toml where __header__ is equal to the variable configured/set. See how to configure this variable in the configuration section of panaetius.
Setting values in a config.toml/environment variables¶
A config.toml can be created in the default folder for the module. In this example this would be found in ~/.config/example_module/config.toml.
An example config.toml could look like:
[example_module]
test = "a6cbf36649b029f3618a0cc1"
[example_module.logging]
path = "~/.config/example_module"
level = "DEBUG"
[example_module.foo]
bar = "6b3b96815218960ceaf7cceb"
These are equivalent to the environment variables:
EXAMPLE_MODULE_TEST
EXAMPLE_MODULE_LOGGING_PATH
EXAMPLE_MODULE_LOGGING_LEVEL
EXAMPLE_MODULE_FOO_BAR
Attention
Environment variables take precedent over the config.toml. If both are set then the environment variable will be used.
You can overwrite the config.toml location by setting the environment variable:
DEFAULT_CONFIG_PATH = "~/path/to/config"
Setting values in your code¶
Values in a config.toml or from an environment variable need to be set in your work in order for you to use them. You can do this easily by
- importing panaetius.
- using the
set_config()function.
E.g your script could contain:
import panaetius
panaetius.set_config(panaetius.CONFIG, 'logging.path')
Note
The key attribute in set_config() is specified as a string, with the hirearchy in the config file split with a .
Important
The default value for a variable defined using set_config() is None. See the documentation of this function to see all the options available.
Accessing values¶
You can then access the result of this variable later in your code:
panaetius.CONFIG.logging_path
Logging¶
In order to save to disk, you need to specify a path for the log file in the config file/environment variable. There is no need to register this with set_config() as panaetius will do this automatically.
There are other options available for you to configure a logger. These are (including the default values which can be overwritten):
[example_module.logging]
backup_count = 3
format = "{\n\t"time": "%(asctime)s",\n\t"file_name": "%(filename)s",'
'\n\t"module": "%(module)s",\n\t"function":"%(funcName)s",\n\t'
'"line_number": "%(lineno)s",\n\t"logging_level":'
'"%(levelname)s",\n\t"message": "%(message)s"\n}"
level = "INFO" # Level should be in CAPS
rotate_bytes = 512000
You can use the logger in your code by:
panaetius.logger.info('some log message')
which gives an output of:
{
"time": "2020-01-13 23:07:17,913",
"file_name": "test.py",
"module": "test",
"function":"<module>",
"line_number": "33",
"logging_level":"INFO",
"message": "some logging message"
}
Importing and using the api¶
See panaetius api page on how to use and import the module.
Configuration¶
See configuration page on how to configure panaetius.