diff --git a/readme.md b/readme.md index a6e5044071a6d1b9b8e0c124eaa4b4de7e61cb37..a1efff12135aa9025e4f5392026879384089b468 100644 --- a/readme.md +++ b/readme.md @@ -3,3 +3,61 @@ ## Description Custom logging file to be imported into other projects. + +Improves logging handling above and beyond Python's default definitions. + + +## Usage +### Basic Usage +Copy the `logging.py` file (found at project root) into the desired project subfolder. + +Then import and initialize with: + + from <log_file_path> import init_logging + + ... + + logger = init_logging(__name__) + +### Default Handling +With default settings, logging levels and corresponding level numbers are: +* 10 - Debug +* 20 - Info +* 30 - Warning +* 40 - Error + +The `debug` level only logs to file. All other levels log to both console and file. + +Logging will create a file for each level, and all logs of that level and higher are saved to the file. + +For more on defaults, see `Modifying Defaults` below. + +### Modifying Logging Defaults +Optional arguments exist in the `init_logging` method to overriding of default values: +* `logging_dir` - The directory to save logs to. + * Default is `<project_root>/src/logs`. +* `handler_class` - The type of logging handler to process logs with. + * Default is `'logging.handlers.RotatingFileHandler'`. +* `max_file_bytes` - The maximum file size for each file, before rotating out and creating a new file. + * Default is 10 MB. +* `log_backup_count` - The maximum number of files to keep of each log type, before overriding oldest. + * Default is 10 files per log file type. + +> Note: If these values are modified after logging is initialized, then it will raise an error. Only change these +> defaults wherever your project calls logging for the first time. + +### Modifying the Logging Settings Dictionary +The logging "settings dictionary" is where a majority of log settings are defined. This is located in the +`get_logging_settings` function. + +See `documents/references.md` for links on general modification of a Python logging settings dictionary. + +#### Adding Additional Log Levels +To define additional log levels, add a single line under the `set_new_log_levels` function (line 115): + + add_logging_level(<log_level_name>, <log_level_num>, <optional_log_method_name>) + +For example, if you want a new log level named `DATA` that is higher than INFO, but lower than WARNING, you could do +this: + + add_logging_level('DATA', 25)