Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Python 3 logged — как поймать и логировать всё?

  1. Python 3 logged — как поймать и логировать всё?

    Йо, народ! Столкнулся с проблемой в своём Python 3 проекте: хочу логировать абсолютно всё что происходит в коде. Все запросы, ответы, ошибки и даже просто инфу о пройденных местах в коде. Как лучше организовать логирование в Питоне 3? Может есть инструменты крутые или либы какие? Дайте советы или код примеры — очень надо разобраться! Спасибо заранее!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! Для логирования в Python 3 хороша стандартная библиотека logging. Вот примерчик, как настроить:

    Программный код:

    import logging

    import sys



    logger 
    logging.getLogger()

    logger.setLevel(logging.DEBUG)



    handler logging.StreamHandler(sys.stdout)

    handler.setLevel(logging.DEBUG)

    formatter logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

    handler.setFormatter(formatter)

    logger.addHandler(handler)



    logger.debug('Debug message')

    logger.info('Info message')

    logger.warning('Warning message')

    logger.error('Error message')

    logger.critical('Critical message')



    try:

        
    0

    except ZeroDivisionError 
    as e:

        
    logger.exception('Exception message'
    Это базовая настройка, можно допилить под свои нужды. Пробуй, должно помочь!

  4. Цитата Сообщение от Сергей7019
    Привет! Для логирования в Python 3 хороша стандартная библиотека logging. Вот примерчик, как настроить:

    Программный код:

    import logging

    import sys



    logger 
    logging.getLogger()

    logger.setLevel(logging.DEBUG)



    handler logging.StreamHandler(sys.stdout)

    handler.setLevel(logging.DEBUG)

    formatter logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

    handler.setFormatter(formatter)

    logger.addHandler(handler)



    logger.debug('Debug message')

    logger.info('Info message')

    logger.warning('Warning message')

    logger.error('Error message')

    logger.critical('Critical message')



    try:

        
    0

    except ZeroDivisionError 
    as e:

        
    logger.exception('Exception message'
    Это базовая настройка, можно допилить под свои нужды. Пробуй, должно помочь!
    Чётко объяснил, спасибо! Особенно за try/except с логированием, это бомба. А можно эту штуку на файлы настроить?

  5. Ещё можно юзать библиотеку loguru. Она мощнее и функциональнее, вот как выглядит пример:

    Программный код:

    from loguru import logger



    logger
    .add('logs.log'rotation='1 day')



    logger.debug('Debug message')

    logger.info('Info message')

    logger.warning('Warning message')

    logger.error('Error message')

    logger.critical('Critical message'
    Тестил лично — прёт как надо!

  6. Цитата Сообщение от Дашенька
    Ещё можно юзать библиотеку loguru. Она мощнее и функциональнее, вот как выглядит пример:

    Программный код:

    from loguru import logger



    logger
    .add('logs.log'rotation='1 day')



    logger.debug('Debug message')

    logger.info('Info message')

    logger.warning('Warning message')

    logger.error('Error message')

    logger.critical('Critical message'
    Тестил лично — прёт как надо!
    О, loguru офигенная! А что если надо ещё и в консоль одновременно выводить?

  7. Можно попробовать Sentry для логирования ошибок в проде. Либа sentry-sdk подключается просто:

    Программный код:

    import sentry_sdk

    from sentry_sdk
    .integrations.logging import LoggingIntegration



    sentry_logging 
    LoggingIntegration(

        
    level=logging.INFO,

        
    event_level=logging.ERROR

    )



    sentry_sdk.init(

        
    dsn='your_dsn_here',

        
    integrations=[sentry_logging]


    Все ошибки автоматом в дашборд улетают.

  8. Цитата Сообщение от ineska
    Можно попробовать Sentry для логирования ошибок в проде. Либа sentry-sdk подключается просто:

    Программный код:

    import sentry_sdk

    from sentry_sdk
    .integrations.logging import LoggingIntegration



    sentry_logging 
    LoggingIntegration(

        
    level=logging.INFO,

        
    event_level=logging.ERROR

    )



    sentry_sdk.init(

        
    dsn='your_dsn_here',

        
    integrations=[sentry_logging]


    Все ошибки автоматом в дашборд улетают.
    Sentry годнота, но только для ошибок. А если логи всей сессии надо?

  9. Для крутых проектов можно ELK Stack настроить: Elasticsearch, Logstash и Kibana. Это мощно, но сложно настраивать.

    Программный код:

    import logging

    from logstash_async
    .handler import AsynchronousLogstashHandler



    logger 
    logging.getLogger('python-logstash-logger')

    logger.setLevel(logging.INFO)



    # создаем асинхронный логхендлер

    handler AsynchronousLogstashHandler(

        
    host='your_logstash_host',

        
    port=5000,

        
    transport='logstash_async.transport.UdpTransport'

    )

    logger.addHandler(handler)



    logger.info('Hello Logstash!'
    Долго настраивать, но зато потом логируешь вообще всё.

  10. Цитата Сообщение от ПраземовыйКолдун
    Для крутых проектов можно ELK Stack настроить: Elasticsearch, Logstash и Kibana. Это мощно, но сложно настраивать.

    Программный код:

    import logging

    from logstash_async
    .handler import AsynchronousLogstashHandler



    logger 
    logging.getLogger('python-logstash-logger')

    logger.setLevel(logging.INFO)



    # создаем асинхронный логхендлер

    handler AsynchronousLogstashHandler(

        
    host='your_logstash_host',

        
    port=5000,

        
    transport='logstash_async.transport.UdpTransport'

    )

    logger.addHandler(handler)



    logger.info('Hello Logstash!'
    Долго настраивать, но зато потом логируешь вообще всё.
    Да ну, нашёл чем мозг взрывать. Но да, мощно. Можно для больших проектов.

Страница 1 из 2 12 ПоследняяПоследняя