Когда я регистрирую событие с помощью logging.info
, оно не отображается в терминале Python.
import logging
logging.info('I am info') # no output
Напротив, события, зарегистрированные с помощью, logging.warn
действительно появляются в терминале.
import logging
logging.warn('I am warning') # outputs "I am warning"
Есть ли изменение уровня среды, которое я могу сделать для logging.info
печати на консоли? Я хочу избежать внесения изменений в каждый файл Python.
getLogger()
, он возвращает вам корневой регистратор. Пока вы не изменяете другие регистраторы, вам нужно изменить только корневой регистратор.Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
>>> import logging
>>> rootLog = logging.getLogger()
>>> rootLog.setLevel(logging.INFO)
>>> rootLog.info('all the kings horses')
>>> rootLog.warning('all the kings men')
all the kings men
Как @ztyx сказал, что уровень ведения журнала по умолчанию - ПРЕДУПРЕЖДЕНИЕ. Вы должны установить его на более низкий уровень
Вы можете сделать это, используя logging.basicConfig и установив уровень ведения журнала :
источник
basicConfig()
у меня не работает, хотяlogging.getLogger().setLevel()
подходит?Вышеупомянутые решения не сработали для меня, но код здесь :
# set up logging to file logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', datefmt='%m-%d %H:%M', filename='/temp/myapp.log', filemode='w') # define a Handler which writes INFO messages or higher to the sys.stderr console = logging.StreamHandler() console.setLevel(logging.INFO) # add the handler to the root logger logging.getLogger('').addHandler(console)
(Я пропустил части кода для удобства чтения)
источник
logging.error("Connection timed out!")
и даже сlevel=logging.DEBUG
вbasicConfig()
, она не печаталась на консоли. Добавление обработчика, большое спасибо !!basicConfig
или установлю его выше INFO, тогда регистратор консоли никогда ничего не будет регистрировать. Если я пропущу,basicConfig
я могу звонитьsetLevel
на регистратор весь день (и я могу видеть изменение уровня, позвонивgetEffectiveLevel
), но он никогда не будет регистрировать что-либо нижеWARNING
уровня. Я не совсем уверен, что это неправильное поведение, но это не то, что я ожидал.