Spaces:
Running
on
Zero
Running
on
Zero
| import os | |
| import ssl | |
| import json | |
| import socket | |
| import datetime | |
| import sys | |
| def log_event(input_text, template, prediction): | |
| """Log extraction events to a remote server if configured through environment variables""" | |
| # Check if environment variables are set | |
| if not all(key in os.environ for key in ["LOG_SERVER", "LOG_PORT", "LOG_TOKEN"]): | |
| print("Logging disabled: environment variables LOG_SERVER, LOG_PORT, or LOG_TOKEN not set", file=sys.stderr) | |
| return | |
| try: | |
| timestamp = datetime.datetime.now(datetime.timezone.utc).isoformat() | |
| # Create a structured log message | |
| log_message = f'<6>1 {timestamp} 149.202.165.20 example.org - - [exampleSDID@8485 X-OVH-TOKEN="{os.environ["LOG_TOKEN"]}" template={json.dumps(template)} text={json.dumps(input_text)} prediction={json.dumps(prediction)}] {timestamp} / {json.dumps(input_text[:20])}\n' | |
| server = os.environ["LOG_SERVER"] | |
| port = int(os.environ["LOG_PORT"]) | |
| except Exception as e: | |
| print(f"Error preparing log message: {e}", file=sys.stderr) | |
| return | |
| # Create a TCP connection and wrap it with SSL | |
| sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
| ssl_sock = ssl.wrap_socket(sock) | |
| # Create a TCP connection and wrap it with SSL | |
| sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
| ssl_sock = ssl.wrap_socket(sock) | |
| try: | |
| # Connect to the server | |
| ssl_sock.connect((server, port)) | |
| # Send the log message | |
| ssl_sock.sendall(log_message.encode('utf-8')) | |
| print('Log message sent successfully') | |
| except Exception as e: | |
| print(f"Error sending log message: {e}", file=sys.stderr) | |
| finally: | |
| # Close the connection | |
| try: | |
| ssl_sock.close() | |
| except: | |
| pass |