Log stderr and stdout when running hook (Fixes #814)
This commit is contained in:
parent
42276c0177
commit
b25e1f23c4
@ -28,6 +28,7 @@ entry.
|
|||||||
import binascii
|
import binascii
|
||||||
import contextlib
|
import contextlib
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
import pickle
|
import pickle
|
||||||
import posixpath
|
import posixpath
|
||||||
@ -1555,9 +1556,20 @@ class Collection(BaseCollection):
|
|||||||
hook = cls.configuration.get("storage", "hook")
|
hook = cls.configuration.get("storage", "hook")
|
||||||
if mode == "w" and hook:
|
if mode == "w" and hook:
|
||||||
cls.logger.debug("Running hook")
|
cls.logger.debug("Running hook")
|
||||||
subprocess.check_call(
|
debug = cls.logger.isEnabledFor(logging.DEBUG)
|
||||||
|
p = subprocess.Popen(
|
||||||
hook % {"user": shlex.quote(user or "Anonymous")},
|
hook % {"user": shlex.quote(user or "Anonymous")},
|
||||||
shell=True, cwd=folder)
|
stdin=subprocess.DEVNULL,
|
||||||
|
stdout=subprocess.PIPE if debug else subprocess.DEVNULL,
|
||||||
|
stderr=subprocess.PIPE if debug else subprocess.DEVNULL,
|
||||||
|
shell=True, universal_newlines=True, cwd=folder)
|
||||||
|
stdout_data, stderr_data = p.communicate()
|
||||||
|
if stdout_data:
|
||||||
|
cls.logger.debug("Captured stdout hook:\n%s", stdout_data)
|
||||||
|
if stderr_data:
|
||||||
|
cls.logger.debug("Captured stderr hook:\n%s", stderr_data)
|
||||||
|
if p.returncode != 0:
|
||||||
|
raise subprocess.CalledProcessError(p.returncode, p.args)
|
||||||
|
|
||||||
|
|
||||||
class FileBackedRwLock:
|
class FileBackedRwLock:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user