Skip to content

Commit 106781b

Browse files
authored
feat: Wire logging with cli flags (#26)
1 parent 0bd216b commit 106781b

File tree

3 files changed

+51
-1
lines changed

3 files changed

+51
-1
lines changed

cloudquery/sdk/plugin/plugin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ def __init__(self, name: str, version: str) -> None:
3838
def init(self, spec: bytes) -> None:
3939
pass
4040

41+
def set_logger(self, logger) -> None:
42+
pass
43+
4144
def name(self) -> str:
4245
return self._name
4346

cloudquery/sdk/scheduler/scheduler.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ def __init__(
3939
self._max_depth = max_depth
4040
if logger is None:
4141
self._logger = structlog.get_logger()
42+
else:
43+
self._logger = logger
4244
if concurrency <= 0:
4345
raise ValueError("concurrency must be greater than 0")
4446
if max_depth <= 0:

cloudquery/sdk/serve/plugin.py

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import grpc
55
import structlog
66
import sys
7+
import os
8+
79
from cloudquery.discovery_v1 import discovery_pb2_grpc
810
from cloudquery.plugin_v3 import plugin_pb2_grpc
911

@@ -15,8 +17,50 @@
1517
DOC_FORMATS = ["json", "markdown"]
1618

1719

20+
_IS_WINDOWS = sys.platform == "win32"
21+
22+
try:
23+
import colorama
24+
except ImportError:
25+
colorama = None
26+
27+
if _IS_WINDOWS: # pragma: no cover
28+
# On Windows, use colors by default only if Colorama is installed.
29+
_has_colors = colorama is not None
30+
else:
31+
# On other OSes, use colors by default.
32+
_has_colors = True
33+
34+
1835
def get_logger(args):
19-
log = structlog.get_logger(processors=[structlog.processors.JSONRenderer()])
36+
processors = [
37+
structlog.contextvars.merge_contextvars,
38+
structlog.processors.add_log_level,
39+
structlog.processors.StackInfoRenderer(),
40+
structlog.dev.set_exc_info,
41+
structlog.processors.TimeStamper(fmt="%Y-%m-%d %H:%M:%S", utc=False),
42+
]
43+
if args.log_format == "text":
44+
processors.append(
45+
structlog.dev.ConsoleRenderer(
46+
colors=os.environ.get("NO_COLOR", "") == ""
47+
and (
48+
os.environ.get("FORCE_COLOR", "") != ""
49+
or (
50+
_has_colors
51+
and sys.stdout is not None
52+
and hasattr(sys.stdout, "isatty")
53+
and sys.stdout.isatty()
54+
)
55+
)
56+
)
57+
)
58+
else:
59+
processors.append(structlog.processors.JSONRenderer())
60+
61+
# if args.log_format == "json":
62+
# processors.append(structlog.processors.JSONRenderer())
63+
log = structlog.get_logger(processors=processors)
2064
return log
2165

2266

@@ -87,6 +131,7 @@ def run(self, args):
87131

88132
def _serve(self, args):
89133
logger = get_logger(args)
134+
self._plugin.set_logger(logger)
90135
self._server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
91136
discovery_pb2_grpc.add_DiscoveryServicer_to_server(
92137
DiscoveryServicer([3]), self._server

0 commit comments

Comments
 (0)