Я использую Anaconda и Spyder в качестве среды Python и редактора.Я только что узнал очень простой способ записать простую информацию о печати в файл журнала.Но это кажется довольно нелепым.То, что я сделал, приведено ниже:
import numpy as np
import pandas as pd
import logging
logger = logging.getLogger('test2')
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh = logging.FileHandler('test2.log')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
ch.setFormatter(formatter)
logger.addHandler(ch)
X = np.array([1,2,3])
print(X)
logger.info(f'{X}')
str1 = 'hello world'
print(str1)
logger.info(str1)
df = pd.DataFrame({'col1': np.arange(40),
'col2': np.tile([0,1,2,3],10)
})
print(df)
logger.info(f'{df}')
В основном, когда я чувствую необходимость напечатать что-то, я должен добавить одну дополнительную строку кода для регистрации.Может показаться, что это не проблема в этом примере, но если мне нужно напечатать 500+ строк материала в сверхдлинном сценарии, это может быть очень неэффективно.
У меня следующие вопросы:
1) Есть ли обходной путь с несколькими строками кода, чтобы всякий раз, когда я что-то печатал на консоль Spyder, он записывался во внешний файл?Я хотел бы посмотреть, как это делается.
2) Если скрипт python запускается, сначала читая его из внешнего текстового файла и выполняя его, делает ли это запись в журнал отличной от случая, когда скриптработает нормально?
3) Поскольку я использую Anaconda в качестве среды Python и Spyder в качестве IDE, это делает запись в журнале чем-то отличным от использования другого редактора Python и другой среды Python?
Спасибо вadvance
EDIT1: я попытался использовать следующий код
ch = logging.StreamHandler(stream=sys.stdout)
ch.setLevel(logging.DEBUG)
, но, к сожалению, все, что напечатано на консоли Spyder, не копируется во внешний файл.Может быть, я что-то пропустил.
import numpy as np
import pandas as pd
import logging
import sys
logger = logging.getLogger('test3')
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh = logging.FileHandler('test3.log')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
ch = logging.StreamHandler(stream=sys.stdout)
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)
X = np.array([1,2,3])
print(X)
str1 = 'hello world'
print(str1)
df = pd.DataFrame({'col1': np.arange(40),
'col2': np.tile([0,1,2,3],10)
})
print(df)