Python -Protokollierung - Anmeldung bei einer rotierenden Datei bereits; Ich möchte eine E -Mail senden, wenn logger.warPython

Python-Programme
Anonymous
 Python -Protokollierung - Anmeldung bei einer rotierenden Datei bereits; Ich möchte eine E -Mail senden, wenn logger.war

Post by Anonymous »

Ich habe gesehen, dass Sie mit der integrierten Protokollierungsfunktion von Python mehrere Handler erstellen können, um Protokolle unterschiedlicher Ebenen an verschiedenen Stellen auszugeben. Ich habe meinen Logger bereits mit einem Queuhandler und einem RotatatingFileHandler eingerichtet, damit Protokollnachrichten in die Warteschlange gestellt und in eine rotierende Datei geschrieben werden, um die Laufzeit meines anderen Codes minimal zu beeinflussen. Python -Protokollierung, aber ich habe noch nichts gefunden, das alles kombiniert, was ich tue. < /P>
unten ist der Code, mit dem ich gerade arbeite.

Code: Select all

import logging
import logging.handlers
import logging.config
import os
import platform
from queue import Queue

class JSONLogFormatter(logging.Formatter):
def format(self, record):
# removed for brevity, this formats the log output...
return json.dumps(log_record)

def get_log_path(app_name):
# removed for brevity, this generates log_path based on the OS my code is running on
return log_path

def initialize(app_name="app_name", log_level=logging.DEBUG, log_size=10*1024*1024, num_files=10):

# Create the main logger
logger = logging.getLogger(__name__)
logger.setLevel(log_level)

# Create a queue for log records
log_queue = Queue()

# Create a QueueHandler to send logs to the queue
queue_handler = logging.handlers.QueueHandler(log_queue)
# Set a log level for the QueueHandler if needed
# queue_handler.setLevel(log_level)

# Add the Handler to the main logger
logger.addHandler(queue_handler)

# Get the log path
log_path = get_log_path(app_name)

# Create a RotatingFileHandler that manages file size & rotation
rotating_file_handler = logging.handlers.RotatingFileHandler(
log_path,
log_size,     # default = 10x1024x1024 = 10 MB per log file
num_files     # default = 10 = 100 MBs worth of logs
)
rotating_file_handler.setFormatter(JSONLogFormatter())
# Set a log level for the RotatingFileHandler if needed
# rotating_file_handler.setLevel(log_level)

# Create a QueueListener to process records in a separate thread
queue_listener = logging.handlers.QueueListener(log_queue, rotating_file_handler)

return logger, queue_listener

def _test():
logger, listener = initialize()
listener.start()

try:
logger.info("This log entry should go to a platform-appropriate directory.")
finally:
listener.stop()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post