Hantera loggar effektivt

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ändning | Exempel |
|---|---|---|
| DEBUG | Detaljerad information för felsökning | logging.debug("Debug info") |
| INFO | Generell information om programkörningen | logging.info("General info") |
| WARNING | Indikation på ett potentiellt problem | logging.warning("Warning") |
| ERROR | Allvarligt fel som behöver åtgärdas | logging.error("Error occurred") |
| CRITICAL | Kritisk fel som kräver omedelbar åtgärd | logging.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 av
print: Byt utprintmot 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
DEBUGför utveckling ochINFOeller 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
RotatingFileHandlerfö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.

