|
7 | 7 | import logging |
8 | 8 | import numbers |
9 | 9 | import signal |
| 10 | +import yaml |
10 | 11 | from six.moves import queue |
11 | 12 | from threading import Thread, Lock |
12 | 13 | from datetime import datetime |
@@ -69,6 +70,22 @@ def __sighandler__(self, signum, frame): |
69 | 70 | self.f = open(self.fpath, "a") |
70 | 71 |
|
71 | 72 |
|
| 73 | +class ReadEnv: |
| 74 | + def __init__(self, envfile): |
| 75 | + self.envfile = envfile |
| 76 | + self.env = self.read() |
| 77 | + setattr(structlog.BoundLoggerBase, "env_context", self.env) |
| 78 | + signal.signal(signal.SIGUSR1, self.__sighandler__) |
| 79 | + |
| 80 | + def read(self): |
| 81 | + with open(self.envfile) as f: |
| 82 | + return yaml.full_load(f.read()) |
| 83 | + |
| 84 | + def __sighandler__(self, signum, frame): |
| 85 | + self.env = self.read() |
| 86 | + setattr(structlog.BoundLoggerBase, "env_context", self.env) |
| 87 | + |
| 88 | + |
72 | 89 | class StderrConsoleRenderer(object): |
73 | 90 | BACKUP_KEYS = ("timestamp", "level", "event", "logger", "stack", "exception") |
74 | 91 |
|
@@ -163,6 +180,8 @@ def _add_base_info(self, event_dict): |
163 | 180 | f = sys._getframe() |
164 | 181 | level_method_frame = f.f_back |
165 | 182 | caller_frame = level_method_frame.f_back |
| 183 | + if hasattr(self, "env_context"): |
| 184 | + event_dict.update(self.env_context) |
166 | 185 | return event_dict |
167 | 186 |
|
168 | 187 | def debug(self, event=None, *args, **kw): |
|
0 commit comments