


1. Pengelogan konfigurasi rendah
Log dibahagikan kepada lima peringkat berikut ini dipadankan untuk nyahpepijat dari bawah ke atas--. >maklumat-->amaran-->ralat-->kritikal, tahap terendah lalai ialah tahap amaran.
1.v1
import logging logging.debug('调试信息') logging.info('正常信息') logging.warning('警告信息') logging.error('报错信息') logging.critical('严重错误信息')
AMARAN:root: mesej amaran
RALAT:root: mesej ralat
KRITIKAL:root: mesej ralat serius
Versi v1 tidak boleh menentukan tahap log; ia hanya boleh mencetak ke skrin dan tidak boleh menulis ke fail. Oleh itu ia boleh ditukar kepada kod berikut.
2.v2
import logging # 日志的基本配置 logging.basicConfig(filename='access.log', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=10) logging.debug('调试信息') # 10 logging.info('正常信息') # 20 logging.warning('警告信息') # 30 logging.error('报错信息') # 40 logging.critical('严重错误信息') # 50
Anda boleh menukar tingkah laku lalai modul pengelogan melalui parameter tertentu dalam fungsi logging.basicConfig() Parameter yang tersedia ialah:
nama fail: Buat FiledHandler dengan nama fail yang ditentukan (konsep pengendali akan diterangkan secara terperinci kemudian), supaya log akan disimpan dalam fail yang ditentukan.
mod fail: mod pembukaan fail, parameter ini digunakan apabila nama fail ditentukan Nilai lalai ialah "a" dan juga boleh ditentukan sebagai "w".
format: Tentukan format paparan log yang digunakan oleh pengendali.
datefmt: Tentukan format tarikh dan masa.
tahap: Tetapkan tahap log rootlogger (konsep khusus akan diterangkan kemudian)
strim: Buat StreamHandler dengan strim yang ditentukan . Anda boleh menentukan output kepada sys.stderr, sys.stdout atau fail lalai ialah sys.stderr. Jika kedua-dua nama fail dan parameter strim disenaraikan, parameter strim akan diabaikan.
Memformat rentetan yang boleh digunakan dalam parameter format:
%(name)s nama Logger
%(levelno)s Tahap log dalam bentuk berangka
%(levelname)s Tahap log dalam bentuk teks
% ( nama laluan)s Nama laluan penuh modul yang memanggil fungsi output log, mungkin bukan
% (nama fail)s Nama fail modul yang memanggil fungsi output log
%(modul)s Nama modul yang memanggil fungsi output log
%(funcName)s Nama fungsi yang memanggil output log fungsi
-
%(lineno)d Baris kod di mana pernyataan yang memanggil fungsi output log terletak
%(dicipta)f Masa semasa, dinyatakan sebagai nombor titik terapung standard UNIX yang mewakili masa
%(relativeCreated)d Apabila mengeluarkan maklumat log, bilangan milisaat sejak Logger dicipta
%(asctime)s Nilai semasa dalam masa bentuk rentetan. Format lalai ialah "2003-07-08 16:49:45,896". Perkara yang mengikuti koma ialah milisaat
%(benang)d ID urutan. Mungkin tiada nama utas
%(threadName). Mungkin tiada
%(proses)d ID proses. Mungkin tiada
%(mesej)s mesej output pengguna
versi v2 tidak boleh menentukan pengekodan aksara ia hanya boleh dicetak ke a fail.
3.v3
Modul pengelogan mengandungi empat peranan: logger, Penapis, Objek Pemformat, Pengendali
logger: objek yang menjana log
Penapis: objek untuk menapis log
Objek pemformat: objek format log yang berbeza boleh disesuaikan dan kemudian diikat pada objek Pengendali yang berbeza untuk digunakan digunakan untuk mengawal format log Pengendali yang berbeza
-
Pengendali: menerima log dan mengawal pencetakan ke tempat yang berbeza, FileHandler digunakan untuk mencetak ke fail, StreamHandler digunakan untuk mencetak ke terminal
''' critical=50 error =40 warning =30 info = 20 debug =10 ''' import logging # 1、logger对象:负责产生日志,然后交给Filter过滤,然后交给不同的Handler输出 logger = logging.getLogger(__file__) # 2、Filter对象:不常用,略 # 3、Handler对象:接收logger传来的日志,然后控制输出 h2 = logging.FileHandler('t1.log') # 打印到文件 h3 = logging.FileHandler('t2.log') # 打印到文件 sm = logging.StreamHandler() # 打印到终端 # 4、Formatter对象:日志格式 formmater1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p',) formmater2 = logging.Formatter('%(asctime)s : %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p',) formmater3 = logging.Formatter('%(name)s %(message)s',) # 5、为Handler对象绑定格式 h2.setFormatter(formmater1) h3.setFormatter(formmater2) sm.setFormatter(formmater3) # 6、将Handler添加给logger并设置日志级别 logger.addHandler(h2) logger.addHandler(h3) logger.addHandler(sm) # 设置日志级别,可以在两个关卡进行设置logger与handler # logger是第一级过滤,然后才能到handler logger.setLevel(30) h2.setLevel(10) h3.setLevel(10) sm.setLevel(10) # 7、测试 logger.debug('debug') logger.info('info') logger.warning('warning') logger.error('error') logger.critical('critical')
2. Pengelogan konfigurasi tinggi
1. Konfigurasikan fail log
Tiga versi log di atas hanyalah untuk membawa kepada fail konfigurasi log kami yang berikut.
import os import logging.config # 定义三种日志输出格式 开始 standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \ '[%(levelname)s][%(message)s]' # 其中name为getLogger()指定的名字;lineno为调用日志输出函数的语句所在的代码行 simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s' id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s' # 定义日志输出格式 结束 logfile_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # log文件的目录,需要自定义文件路径 # atm logfile_dir = os.path.join(logfile_dir, 'log') # C:\Users\oldboy\Desktop\atm\log logfile_name = 'log.log' # log文件名,需要自定义路径名 # 如果不存在定义的日志目录就创建一个 if not os.path.isdir(logfile_dir): # C:\Users\oldboy\Desktop\atm\log os.mkdir(logfile_dir) # log文件的全路径 logfile_path = os.path.join(logfile_dir, logfile_name) # C:\Users\oldboy\Desktop\atm\log\log.log # 定义日志路径 结束 # log配置字典 LOGGING_DIC = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'standard': { 'format': standard_format }, 'simple': { 'format': simple_format }, }, 'filters': {}, # filter可以不定义 'handlers': { # 打印到终端的日志 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', # 打印到屏幕 'formatter': 'simple' }, # 打印到文件的日志,收集info及以上的日志 'default': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件 'formatter': 'standard', 'filename': logfile_path, # 日志文件 'maxBytes': 1024 * 1024 * 5, # 日志大小 5M (*****) 'backupCount': 5, 'encoding': 'utf-8', # 日志文件的编码,再也不用担心中文log乱码了 }, }, 'loggers': { # logging.getLogger(__name__)拿到的logger配置。如果''设置为固定值logger1,则下次导入必须设置成logging.getLogger('logger1') '': { # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕 'handlers': ['default', 'console'], 'level': 'DEBUG', 'propagate': False, # 向上(更高level的logger)传递 }, }, } def load_my_logging_cfg(): logging.config.dictConfig(LOGGING_DIC) # 导入上面定义的logging配置 logger = logging.getLogger(__name__) # 生成一个log实例 logger.info('It works!') # 记录该文件的运行状态 return logger if __name__ == '__main__': load_my_logging_cfg()
2. Log penggunaan
import time import logging import my_logging # 导入自定义的logging配置 logger = logging.getLogger(__name__) # 生成logger实例 def demo(): logger.debug("start range... time:{}".format(time.time())) logger.info("中文测试开始。。。") for i in range(10): logger.debug("i:{}".format(i)) time.sleep(0.2) else: logger.debug("over range... time:{}".format(time.time())) logger.info("中文测试结束。。。") if __name__ == "__main__": my_logging.load_my_logging_cfg() # 在你程序文件的入口加载自定义logging配置 demo()
3
Atas ialah kandungan terperinci Bagaimana untuk menggunakan modul pengelogan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

Python sesuai untuk sains data, pembangunan web dan tugas automasi, manakala C sesuai untuk pengaturcaraan sistem, pembangunan permainan dan sistem tertanam. Python terkenal dengan kesederhanaan dan ekosistem yang kuat, manakala C dikenali dengan keupayaan kawalan dan keupayaan kawalan yang mendasari.

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Anda boleh mempelajari asas -asas Python dalam masa dua jam. 1. Belajar pembolehubah dan jenis data, 2. Struktur kawalan induk seperti jika pernyataan dan gelung, 3 memahami definisi dan penggunaan fungsi. Ini akan membantu anda mula menulis program python mudah.

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Dreamweaver CS6
Alat pembangunan web visual

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini