Как регистрировать только определенные вещи в файл журнала? - PullRequest
1 голос
/ 31 марта 2019

Я работаю над поиском в Интернете, где я должен удалить несколько URL.Я использую ThreadPoolExecutor для выполнения этой задачи.

Я также хочу реализовать вход в нее.Я хочу, чтобы в файлы журналов записывались только определенные отладочные или информационные или предупреждающие операторы.Но на самом деле он записывает каждый запрос в файл журнала.

Как мне сделать так, чтобы записывать в файл только конкретные утверждения, которые я упомянул logging.info или logging.warning и т. Д.

Вот фрагмент моего кода:

logging.basicConfig(filename='BOM.log', filemode='w', format='%(asctime)s - %(levelname)s - %(message)s')
logging.debug('Logger initiated')

with ThreadPoolExecutor(max_workers=100) as executor:
    startt = time.time()
    futures = [executor.submit(get_movie_details, movie_id) for movie_id in all_movies_ids]
    for result in as_completed(futures):
        all_movies_summary_data.append(result)
    endt = time.time()
    print("Time Taken: {:.6f}s".format(endt - startt))

Вот как выглядит файл журнала:

2019-03-31 16:21:04,722 - DEBUG - Logger initiated
2019-03-31 16:21:04,731 - DEBUG - Starting new HTTPS connection (1): www.boxofficemojo.com:443
2019-03-31 16:21:04,733 - DEBUG - Starting new HTTPS connection (2): www.boxofficemojo.com:443
2019-03-31 16:21:04,736 - DEBUG - Starting new HTTPS connection (3): www.boxofficemojo.com:443
.
.
.

Как мне убедиться, что в файле журнала запускается только Logger, а не остальные.Почему я получаю дополнительный контент в лог-файл, хотя я не упоминал об этом, где-либо записывать эти элементы.

Я выгляжу совершенно неправильно при регистрации?Пожалуйста, помогите мне.

Я попытался установить уровень журнала, как предложено glhr в одном из ответов

Но он выдает такой результат.

2019-03-31 17:07:29,817 - INFO - Logger initiated
2019-03-31 17:07:30,981 - WARNING - Connection pool is full, discarding connection: www.boxofficemojo.com
2019-03-31 17:07:30,994 - WARNING - Connection pool is full, discarding connection: www.boxofficemojo.com
2019-03-31 17:07:30,997 - WARNING - Connection pool is full, discarding connection: www.boxofficemojo.com

Ответы [ 2 ]

2 голосов
/ 31 марта 2019

logging.basicConfig настраивает регистратор root , от которого наследуются другие регистраторы.

В результате, конфигурация регистрации, установленная с помощью этого метода, будет применяться к регистрации, выполняемой другими модулями, отсюда и дополнительные строки журнала в файле журнала.

Чтобы регистрировать только ваши сообщения:

(адаптировано с https://docs.python.org/3/howto/logging.html#logging-advanced-tutorial)

import logging

# create logger
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)

# create file handler and set level to INFO
file_handler = logging.FileHandler('BOM.log')
file_handler.setLevel(logging.INFO)
logger.addHandler(file_handler)

# 'application code'
logger.debug('not shown in log file')
logger.info('info message in log file')
logger.warning('warning message in log file')
logger.error('error message in log file')

Результат BOM.log

info message in log file
warning message in log file
error message in log file
1 голос
/ 31 марта 2019

Укажите уровень ведения журнала в basicConfig:

logging.basicConfig(level=logging.INFO, filename='BOM.log', format=...
logging.info('Logger initiated')

Это будет игнорировать сообщения журнала менее серьезными, чем INFO.

...