Hvad er Python ‘ s standard logge formatter?

Jeg forsøger at tyde de oplysninger, der er indeholdt i mine logs (logning setup bruger standard formatter). Den dokumentation stater:

Gøre formatering for et rekord – hvis en formatter er indstillet, ved at bruge det. Ellers skal du bruge standard formatter for modulet.

Men jeg kan ikke finde nogen reference faktisk angivelse af, hvad denne standard format er.

Det synes som den dokumentation, der skal angive, at.

OriginalForfatteren Taras | 2013-05-26

4 svar

  1. 37

    Standard format er beliggende her, som er:

    BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"  

    Den Format kode vil fortælle dig, hvordan du kan tilpasse den. Her er et eksempel på, hvordan du kan tilpasse det.

    import sys
    import logging
    
    logging.basicConfig(
        level=logging.DEBUG,
        format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
        datefmt="%H:%M:%S",
        stream=sys.stdout)
    
    logging.info("HEY")

    Som resulterer i:

    [26/May/2013 06:41:40] INFO [root.<module>:1] HEY
    Hvordan kan du vide, de BASIC_FORMAT attribut for at logge? det er ikke nævnt i dokumentet, efter at alle
    log er udefineret i dit eksempel. Burde nok kaldes logging.

    OriginalForfatteren rh0dium

  2. 3
    import logging
    print(logging.BASIC_FORMAT)

    Gammel tråd, men det kommer først op i mit google-søgeresultaterne for den forespørgsel “python logge default format”, så jeg tænkte, at jeg bør tilføje mit svar.

    Også nogle kommentarer spurgt om, hvordan man kunne komme til at opleve dette på egen hånd. Her er der en naturlig ting at gøre:

    import logging
    print(dir(logging))

    BASIC_FORMAT er i der, det er faktisk den første post i resultatet i mit tilfælde.

    OriginalForfatteren awhan

  3. 1

    Det er i kilden af logging/__init__.py:

    _defaultFormatter = Formatter()

    Standard formatering streng er %(besked)s, der er i kilden:

    if fmt:
        self._fmt = fmt
    else:
        self._fmt = "%(message)s"

    OriginalForfatteren Blender

  4. 1

    Standard synes at være %(levelname)s:%(name)s:%(message)s

    import logging
    logging.error("Some error")
    print "fmt: " , logging.root.handlers[0].formatter._fmt
    # ERROR:root:Some error
    # fmt:  %(levelname)s:%(name)s:%(message)s
    Viser, hvordan du kan kontrollere den aktuelle formatter i stedet for default i kildekoden er et bedre svar IMO.

    OriginalForfatteren Salem

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *