Loggning och felhantering för botar
Bygg motståndskraftiga enkla botar genom att lägga till strukturerad loggning och kontrollerad felhantering, så att fel blir synliga och kan åtgärdas.
Loggning och felhantering för botar är en gratis lektion i Webbskrapning och botutveckling på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Webbskrapning och botutveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Webbskrapning och botutveckling innehåller totalt 4 lektioner.
Varför botar behöver loggar
En bot körs utan övervakning, ofta enligt ett schema. När något går fel tittar du inte på. Loggning lämnar ett spår så att du i efterhand kan diagnostisera vad som hände.
Utan loggar kan ett tyst fel förbli oupptäckt i flera dagar.
print() är inte loggning
Nybörjare använder print(), men det saknar nivåer, tidsstämplar och ett enkelt sätt att omdirigera utskriften till en fil. Pythons modul logging löser allt detta.
print('something happened') # no level, no time, hard to manageKonfigurera loggning
Konfigurera loggningen en gång vid start. Ange ett format med tidsstämpel och nivå samt välj vart utdata ska skickas.
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(levelname)s %(message)s'
)
log = logging.getLogger('bot')
log.info('Bot started')Loggningsnivåer
Nivåer låter dig styra detaljgraden:
DEBUGdetaljerad spårning.INFOnormala framsteg.WARNINGnågot ovanligt men återställningsbart.ERRORen åtgärd misslyckades.CRITICALboten kan inte fortsätta.
log.debug('fetched 12 rows')
log.warning('retrying after timeout')
log.error('login failed')Logga till en fil
För botar utan övervakning ska du skriva loggar till en fil så att du kan granska dem senare. En roterande handler begränsar filstorleken.
from logging.handlers import RotatingFileHandler
handler = RotatingFileHandler('bot.log', maxBytes=1_000_000, backupCount=3)
log.addHandler(handler)Fånga undantag
Placera riskfyllda åtgärder i try/except så att ett enda fel inte kraschar hela körningen. Logga felet tillsammans med relevant sammanhang.
try:
submit_form(data)
except Exception as e:
log.error('form submission failed: %s', e)Logga fullständiga stack traces
Använd log.exception i ett except-block för att fånga hela stacktracen, vilket är ovärderligt vid felsökning.
try:
risky()
except Exception:
log.exception('unexpected error in risky()')Försök igen efter tillfälliga fel
Nätverksstörningar är vanliga. Fånga dem och försök igen några gånger innan du ger upp, och logga varje försök.
for attempt in range(3):
try:
fetch()
break
except ConnectionError:
log.warning('attempt %d failed, retrying', attempt + 1)
else:
log.error('all attempts failed')Misslyckas tydligt
Tysta fel är farliga. Vid kritiska fel ska du eskalera: skicka ett varningsmeddelande via e-post, skriv en markörfil eller avsluta med en kod som inte är noll så att schemaläggaren märker det.
import sys
if not data:
log.critical('no data scraped, aborting')
sys.exit(1)Kontrollerad avslutning
Frigör alltid resurser även vid fel. Ett finally-block eller context managers säkerställer att webbläsare stängs och filer töms oavsett vad som gick fel.
try:
run_bot()
finally:
driver.quit()
log.info('bot finished')Sammanhang i strukturerad loggning
Fäst sammanhang vid varje loggrad, till exempel den aktuella URL:en eller postens id, så att du direkt ser vilken post ett meddelande gäller när du granskar en lång logg.
log.info('scraped item %s from %s', item_id, url)Snabbkontroll
Testa dina kunskaper om loggning och felhantering i botar.
Sammanfattning
Du har lärt dig att göra enkla botar robusta: använda modulen logging i stället för print, välja lämpliga nivåer, logga till roterande filer, fånga och logga undantag med stack traces, försöka igen efter tillfälliga fel, signalera kritiska fel tydligt och avsluta kontrollerat.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Loggning och felhantering för botar” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Webbskrapning och botutveckling, inklusive ”Loggning och felhantering för botar”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Webbskrapning och botutveckling innehåller totalt 4 lektioner.
Vad lär jag mig i ”Loggning och felhantering för botar”?
Bygg motståndskraftiga enkla botar genom att lägga till strukturerad loggning och kontrollerad felhantering, så att fel blir synliga och kan åtgärdas. Ni övar på Webbskrapning och botutveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Webbskrapning och botutveckling?
Du behöver inga förkunskaper. Utbildningen i Webbskrapning och botutveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Loggning och felhantering för botar”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Webbskrapning och botutveckling-lektionen?
Ja. Varje Webbskrapning och botutveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Definiera botars mål
- Automatisera enkla formulärskick
- Schemalägga grundläggande uppgifter
- Loggning och felhantering för botar