Skip to content
2 changes: 1 addition & 1 deletion .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.14"]
python-version: ["3.10", "3.14"]

steps:
- name: Checkout 🛒
Expand Down
29 changes: 18 additions & 11 deletions src/keboola/component/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,18 +160,22 @@ def filter(self, rec):

hd1 = logging.StreamHandler(sys.stdout)
hd1.addFilter(InfoFilter())
hd1._keboola_owned = True
hd2 = logging.StreamHandler(sys.stderr)
hd2.setLevel(logging.WARNING)
hd2._keboola_owned = True

logging.getLogger().setLevel(log_level)
# remove default handler
for h in logging.getLogger().handlers:
logging.getLogger().removeHandler(h)
logging.getLogger().addHandler(hd1)
logging.getLogger().addHandler(hd2)
root = logging.getLogger()
root.setLevel(log_level)
# Remove only handlers previously installed by keboola.component, leaving
# any external handlers (e.g. test infrastructure) untouched.
for h in list(root.handlers):
if getattr(h, "_keboola_owned", False):
root.removeHandler(h)
root.addHandler(hd1)
root.addHandler(hd2)

logger = logging.getLogger()
return logger
return root

@staticmethod
def set_gelf_logger(
Expand All @@ -192,9 +196,11 @@ def set_gelf_logger(

Returns: Logger object
"""
# remove existing handlers
for h in logging.getLogger().handlers:
logging.getLogger().removeHandler(h)
# Remove only handlers previously installed by keboola.component.
root = logging.getLogger()
for h in list(root.handlers):
if getattr(h, "_keboola_owned", False):
root.removeHandler(h)
if stdout:
CommonInterface.set_default_logger(log_level)

Expand All @@ -210,6 +216,7 @@ def set_gelf_logger(
else:
raise ValueError(f"Unsupported gelf transport layer: {transport_layer}. Choose TCP or UDP")

gelf._keboola_owned = True
logging.getLogger().setLevel(log_level)
logging.getLogger().addHandler(gelf)

Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading