| 56 | |
| 57 | |
| 58 | class JsonArrayFileHandler(logging.FileHandler): |
| 59 | def __init__(self, filename, mode="a", encoding=None, delay=False): |
| 60 | super().__init__(filename, mode, encoding, delay) |
| 61 | self.closed_properly = False |
| 62 | self.stream.write("[") |
| 63 | atexit.register(self.close) |
| 64 | |
| 65 | def close(self): |
| 66 | self.acquire() |
| 67 | try: |
| 68 | if not self.closed_properly: |
| 69 | self.stream.write("]") |
| 70 | self.closed_properly = True |
| 71 | super().close() |
| 72 | finally: |
| 73 | self.release() |
| 74 | |
| 75 | def emit(self, record): |
| 76 | if self.stream.tell() > 1: |
| 77 | self.stream.write(",\n") |
| 78 | super().emit(record) |
| 79 | |
| 80 | |
| 81 | class LoggingFilter(logging.Filter): |
nothing calls this directly
no outgoing calls
no test coverage detected