Можно ли сохранить информацию журнала из проекта python в локальной переменной? - PullRequest
0 голосов
/ 06 апреля 2020

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

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

1 Ответ

0 голосов
/ 06 апреля 2020

Содержимое этого сайта помогло мне найти решение: http://alanwsmith.com/capturing-python-log-output-in-a-variable. Вот выдержка из используемого кода.

import logging
import io

### Create the logger
logger = logging.getLogger('basic_logger')
logger.setLevel(logging.DEBUG)

### Setup the console handler with a StringIO object
log_capture_string = io.StringIO()
ch = logging.StreamHandler(log_capture_string)
ch.setLevel(logging.DEBUG)

### Optionally add a formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)

### Add the console handler to the logger
logger.addHandler(ch)


### Send log messages. 
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')


### Pull the contents back into a string and close the stream
log_contents = log_capture_string.getvalue()
log_capture_string.close()

### Output as lower case to prove it worked. 
print(log_contents.lower())

Вы добавляете log_capture_string в качестве аргумента к вашему StreamHandler, а затем получаете свой контент от вашего log_capture_string StringIO

...