2010-10-07 17 views
9

Python logging module jest uciążliwy w użyciu. Czy istnieje bardziej elegancka alternatywa? Integracja z powiadomieniami na pulpicie byłaby plusem.rejestracja pytona alternatywna

+3

wygląda obiecująco: http : //packages.python.org/Logbook – hoju

+1

W jaki sposób moduł logowania jest uciążliwy? Czego brakuje w jego możliwościach? –

+4

użyłeś tego? To nie jest pyton. – hoju

Odpowiedz

7

Możesz zajrzeć na Twiggy, to wczesny etap próba zbudowania bardziej pythonic alternatywę dla modułu rejestrowania.

+9

ha! log -> twig – hoju

+1

Zgadzam się! Ha! Zajęło mi sekundę, żeby to zdobyć. – synthesizerpatel

+1

wydaje się martwy ... ostatnie zatwierdzenie było ponad rok temu – Tshepang

0
#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import logging 
import logging.handlers 
from logging.config import dictConfig 

logger = logging.getLogger(__name__) 

DEFAULT_LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
} 
def configure_logging(logfile_path): 
    """ 
    Initialize logging defaults for Project. 

    :param logfile_path: logfile used to the logfile 
    :type logfile_path: string 

    This function does: 

    - Assign INFO and DEBUG level to logger file handler and console handler 

    """ 
    dictConfig(DEFAULT_LOGGING) 

    default_formatter = logging.Formatter(
     "[%(asctime)s] [%(levelname)s] [%(name)s] [%(funcName)s():%(lineno)s] [PID:%(process)d TID:%(thread)d] %(message)s", 
     "%d/%m/%Y %H:%M:%S") 

    file_handler = logging.handlers.RotatingFileHandler(logfile_path, maxBytes=10485760,backupCount=300, encoding='utf-8') 
    file_handler.setLevel(logging.INFO) 

    console_handler = logging.StreamHandler() 
    console_handler.setLevel(logging.DEBUG) 

    file_handler.setFormatter(default_formatter) 
    console_handler.setFormatter(default_formatter) 

    logging.root.setLevel(logging.DEBUG) 
    logging.root.addHandler(file_handler) 
    logging.root.addHandler(console_handler) 



[31/10/2015 22:00:33] [DEBUG] [yourmodulename] [yourfunction_name():9] [PID:61314 TID:140735248744448] this is logger infomation from hello module 

można config logfile z konsoli i pliku, nie sądzę pulpit notication jest dobrym pomysłem, można zobaczyć informacje dziennika z konsoli i logów

3

Czasami warto spojrzeć na pysimplelog. To czysta pyton, bardzo prosty w obsłudze, pip zainstalować i zapewnia co trzeba

from pysimplelog import Logger 
L=Logger() 
print L 
>>> Logger (Version 0.2.1) 
>>> log type |log name |level  |std flag |file flag | 
>>> ----------|----------|----------|----------|----------| 
>>> debug  |DEBUG  |0.0  |True  |True  | 
>>> info  |INFO  |10.0  |True  |True  | 
>>> warn  |WARNING |20.0  |True  |True  | 
>>> error  |ERROR  |30.0  |True  |True  | 
>>> critical |CRITICAL |100.0  |True  |True  | 

L.info('I am an info') 
>>> 2016-09-26 15:01:17 - logger <INFO> I am an info 

L.warn('I am a warning') 
>>> 2016-09-26 15:01:17 - logger <WARNING> I am a warning 

L.error('I am an error') 
>>> 2016-09-26 15:01:17 - logger <ERROR> I am an error 

iz tych parametrów, a „simplelog.log” plik zostanie utworzony i aktualizowany automatycznie za ciebie

+0

+1 Hej, który wygląda świetnie! Jedna uwaga jednak: Nie polecam używania rejestrowania * poza definicją funkcji * zanim nie zostanie ona znana [czy jest to bezpieczne] (https://stackoverflow.com/questions/46356672/). –