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 |