mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Merge pull request #3276 from MinchinWeb/plugin-error-loading
This commit is contained in:
commit
8a01cb11e1
2 changed files with 38 additions and 7 deletions
|
|
@ -80,7 +80,14 @@ class Pelican:
|
||||||
plugin.register()
|
plugin.register()
|
||||||
self.plugins.append(plugin)
|
self.plugins.append(plugin)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error("Cannot register plugin `%s`\n%s", name, e)
|
logger.error(
|
||||||
|
"Cannot register plugin `%s`\n%s",
|
||||||
|
name,
|
||||||
|
e,
|
||||||
|
stacklevel=2,
|
||||||
|
)
|
||||||
|
if self.settings.get("DEBUG", False):
|
||||||
|
console.print_exception()
|
||||||
|
|
||||||
self.settings["PLUGINS"] = [get_plugin_name(p) for p in self.plugins]
|
self.settings["PLUGINS"] = [get_plugin_name(p) for p in self.plugins]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,15 +85,39 @@ class FatalLogger(LimitLogger):
|
||||||
warnings_fatal = False
|
warnings_fatal = False
|
||||||
errors_fatal = False
|
errors_fatal = False
|
||||||
|
|
||||||
# adding `stacklevel=2` means that the displayed filename and line number
|
def warning(self, *args, stacklevel=1, **kwargs):
|
||||||
# will match the "original" calling location, rather than the wrapper here
|
"""
|
||||||
def warning(self, *args, **kwargs):
|
Displays a logging warning.
|
||||||
super().warning(*args, stacklevel=2, **kwargs)
|
|
||||||
|
Wrapping it here allows Pelican to filter warnings, and conditionally
|
||||||
|
make warnings fatal.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
stacklevel (int): the stacklevel that would be used to display the
|
||||||
|
calling location, except for this function. Adjusting the
|
||||||
|
stacklevel allows you to see the "true" calling location of the
|
||||||
|
warning, rather than this wrapper location.
|
||||||
|
"""
|
||||||
|
stacklevel += 1
|
||||||
|
super().warning(*args, stacklevel=stacklevel, **kwargs)
|
||||||
if FatalLogger.warnings_fatal:
|
if FatalLogger.warnings_fatal:
|
||||||
raise RuntimeError("Warning encountered")
|
raise RuntimeError("Warning encountered")
|
||||||
|
|
||||||
def error(self, *args, **kwargs):
|
def error(self, *args, stacklevel=1, **kwargs):
|
||||||
super().error(*args, stacklevel=2, **kwargs)
|
"""
|
||||||
|
Displays a logging error.
|
||||||
|
|
||||||
|
Wrapping it here allows Pelican to filter errors, and conditionally
|
||||||
|
make errors non-fatal.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
stacklevel (int): the stacklevel that would be used to display the
|
||||||
|
calling location, except for this function. Adjusting the
|
||||||
|
stacklevel allows you to see the "true" calling location of the
|
||||||
|
error, rather than this wrapper location.
|
||||||
|
"""
|
||||||
|
stacklevel += 1
|
||||||
|
super().error(*args, stacklevel=stacklevel, **kwargs)
|
||||||
if FatalLogger.errors_fatal:
|
if FatalLogger.errors_fatal:
|
||||||
raise RuntimeError("Error encountered")
|
raise RuntimeError("Error encountered")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue