Saat saya membuat log acara dengan logging.info
, itu tidak muncul di terminal Python.
import logging
logging.info('I am info') # no output
Sebaliknya, peristiwa yang dicatat dengan logging.warn
memang muncul di terminal.
import logging
logging.warn('I am warning') # outputs "I am warning"
Apakah ada perubahan tingkat lingkungan yang saya dapat lakukan logging.info
untuk mencetak ke konsol? Saya ingin menghindari membuat perubahan di setiap file Python.
getLogger()
, ini mengembalikan Anda ke logger root. Selama Anda tidak mengubah logger lain, Anda hanya perlu mengubah logger root.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
Seperti yang dikatakan @ztyx bahwa level logger default adalah PERINGATAN. Anda harus mengaturnya ke level yang lebih rendah
Anda dapat melakukannya dengan menggunakan logging.basicConfig dan menyetel level logger :
sumber
basicConfig()
tidak berhasil untuk saya, meskipunlogging.getLogger().setLevel()
bekerja dengan sesuai?Solusi di atas tidak berhasil untuk saya, tetapi kode di sini berfungsi :
# 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)
(Saya menghilangkan beberapa bagian kode agar mudah dibaca)
sumber
logging.error("Connection timed out!")
dan bahkan denganlevel=logging.DEBUG
dibasicConfig()
, itu tidak akan mencetak ke konsol. Menambahkan pawang, terima kasih banyak !!basicConfig
atau mengaturnya di atas INFO maka logger konsol tidak akan pernah mencatat apapun. Jika saya keluarbasicConfig
maka saya dapat memanggilsetLevel
logger sepanjang hari (dan saya dapat melihat perubahan level dengan menelepongetEffectiveLevel
) tetapi tidak akan pernah mencatat apa pun di bawahWARNING
level. Saya sebenarnya tidak yakin bahwa itu bukanlah perilaku yang benar tetapi bukan itu yang saya harapkan.