Logging i Python

Logging i Python

Hantera loggar effektivt

A woman and a WhiteBoard

Att använda loggar är en viktig del av utveckling och felsökning. Loggar hjälper dig att förstå vad som händer i din kod och kan ge värdefull information om fel och prestanda. Pythons inbyggda logging-modul gör det enkelt att skapa och hantera loggar.

Varför använda loggar?

Loggar används för att:

  • Spåra och analysera vad som händer i din applikation.
  • Felsöka problem.
  • Dokumentera viktiga händelser och tillstånd.

Grunderna i Pythons logging-modul

En enkel logg

import logging# Create a basic loglogging.basicConfig(level=logging.INFO)logging.info("This is an informational message")# Output: INFO:root:This is an informational messageCode language: PHP (php)

Loggnivåer

NivåAnvändningExempel
DEBUGDetaljerad information för felsökninglogging.debug("Debug info")
INFOGenerell information om programkörningenlogging.info("General info")
WARNINGIndikation på ett potentiellt problemlogging.warning("Warning")
ERRORAllvarligt fel som behöver åtgärdaslogging.error("Error occurred")
CRITICALKritisk fel som kräver omedelbar åtgärdlogging.critical("Critical issue")

Använda olika nivåer

logging.debug("This is a debug message")logging.info("This is an informational message")logging.warning("This is a warning")logging.error("This is an error")logging.critical("This is critical")# Output: Shows messages from level WARNING and above by defaultCode language: PHP (php)

Anpassa loggningsformat

Du kan anpassa hur loggmeddelanden visas med format.

logging.basicConfig( level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")logging.info("Logging with a custom format")# Output: 2024-11-21 12:00:00,000 - INFO - Logging with a custom formatCode language: PHP (php)

Spara loggar till en fil

För att spara loggar till en fil använder du filename.

logging.basicConfig( level=logging.INFO, filename="app.log", filemode="w", # Overwrite the log file each time format="%(asctime)s - %(levelname)s - %(message)s")logging.info("This message is saved to a file")# Output: Check the app.log file for this messageCode language: PHP (php)

Använda loggers och handlers

Med Logger och Handler kan du skapa mer avancerade loggningssystem.

Exempel: Logger och konsolhandler

# Create a logger logger = logging.getLogger("my_logger") logger.setLevel(logging.DEBUG) # Create a console handler console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) # Create a formatter formatter = logging.Formatter("%(name)s - %(levelname)s - %(message)s") console_handler.setFormatter(formatter) # Add the handler to the logger logger.addHandler(console_handler) logger.info("This is an informational message from my_logger") # Output: my_logger - INFO - This is an informational message from my_loggerCode language: PHP (php)

Praktiskt exempel: Logga fel i en kalkylator

Låt oss skapa en enkel kalkylator med loggning för att spåra fel.

Kalkylator med loggning

# Simple calculator with loggingdef divide(a, b): if b == 0: logging.error("Attempted division by zero") raise ValueError("Cannot divide by zero") return a / b# Set up logginglogging.basicConfig( level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")try: result = divide(10, 0)except ValueError as e: logging.critical(f"Critical error occurred: {e}")# Output:# ERROR - Attempted division by zero# CRITICAL - Critical error occurred: Cannot divide by zeroCode language: PHP (php)

Vanliga fallgropar

  • Överanvändning avprint: Byt ut print mot loggning för bättre kontroll och flexibilitet.
  • För många loggar: Logga bara det som är relevant för att undvika att skapa röriga loggar.
  • Brist på anpassning: Använd anpassade format och nivåer för att göra loggar mer användbara.

Tips för effektiv loggning

  • Använd specifika loggnivåer: Använd DEBUG för utveckling och INFO eller högre för produktion.
  • Spara till separata filer: Dela upp loggar i olika filer för fel, varningar och allmän information.
  • Rengör gamla loggar: Använd verktyg som RotatingFileHandler för att hantera loggfiler som växer sig stora.

Sammanfattande exempel

Här är ett komplett exempel som kombinerar flera loggningstekniker.

Exempel på projektloggning

import loggingfrom logging.handlers import RotatingFileHandler# Set up rotating file handlerhandler = RotatingFileHandler("app.log", maxBytes=2000, backupCount=5)formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")handler.setFormatter(formatter)# Create loggerlogger = logging.getLogger("app_logger")logger.setLevel(logging.DEBUG)logger.addHandler(handler)# Log some messageslogger.debug("Debugging application start")logger.info("Application is running")logger.warning("This is a warning message")logger.error("An error occurred")logger.critical("Critical issue encountered")# Output: Log messages are saved to rotating log filesCode language: PHP (php)

Sammanfattning

I detta kapitel har vi lärt oss:

  • Grunderna i loggning och hur man använder loggnivåer.
  • Hur man anpassar loggningsformat och sparar loggar till filer.
  • Hur man använder loggers och handlers för avancerad loggning.
  • Tips och vanliga fallgropar för effektiv loggning.

Loggning är en viktig del av professionell utveckling och hjälper dig att hålla koll på vad som händer i din applikation.

Leave a Reply

Your email address will not be published. Required fields are marked *