Logging
Logger that attempts to diagnose and propose a solution for any errors it is asked to log. Unlike our debugger and errors modules, explanations are not streamed because the intended use case is not focused on live development.
Quickstart
from roboduck import logging
logger = logging.getLogger(path='/tmp/log.txt')
data = {'x': 0}
try:
x = data.x
except Exception as e:
logger.error(e)
Classes
DuckLogger
Bases: Logger
Replacement for logging.Logger class that uses our errors module to log natural language explanations and fixes along with the original error. (More specifically, we just wait for the errors module to update the message in the original exception before logging.)
Source code in lib/roboduck/logging.py
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
|
Attributes
excepthook_kwargs = kwargs or {}
instance-attribute
Functions
getLogger(name=None, **kwargs)
Mimics interface of builtin logging.getLogger, but with our custom logger that ensures all errors explain themselves.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
kwargs |
any
|
These are passed to roboduck.errors.post_mortem which in turn passes them to our custom debugger class. The most important arg here is: prompt_name (str) - determines what prompt/prompt_name the custom debugger uses, e.g. "debug_stack_trace". Users can also define their own custom prompt (https://hdmamin.github.io/roboduck/custom_prompts/) and pass in the file path here. |
{}
|
Examples:
from roboduck import logging
logger = logging.getLogger()
Source code in lib/roboduck/logging.py
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
|