cari
Rumahpembangunan bahagian belakangTutorial PythonBagaimana untuk menggunakan modul pengelogan dalam Python

    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!

    Kenyataan
    Artikel ini dikembalikan pada:亿速云. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
    Python dan Masa: Memanfaatkan masa belajar andaPython dan Masa: Memanfaatkan masa belajar andaApr 14, 2025 am 12:02 AM

    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: Permainan, GUI, dan banyak lagiPython: Permainan, GUI, dan banyak lagiApr 13, 2025 am 12:14 AM

    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 vs C: Aplikasi dan kes penggunaan dibandingkanPython vs C: Aplikasi dan kes penggunaan dibandingkanApr 12, 2025 am 12:01 AM

    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.

    Rancangan Python 2 jam: Pendekatan yang realistikRancangan Python 2 jam: Pendekatan yang realistikApr 11, 2025 am 12:04 AM

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

    Python: meneroka aplikasi utamanyaPython: meneroka aplikasi utamanyaApr 10, 2025 am 09:41 AM

    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.

    Berapa banyak python yang boleh anda pelajari dalam 2 jam?Berapa banyak python yang boleh anda pelajari dalam 2 jam?Apr 09, 2025 pm 04:33 PM

    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 Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Apr 02, 2025 am 07:18 AM

    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 ...

    Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Apr 02, 2025 am 07:15 AM

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

    See all articles

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    AI Hentai Generator

    AI Hentai Generator

    Menjana ai hentai secara percuma.

    Artikel Panas

    R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
    4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Tetapan grafik terbaik
    4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
    4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Cara Membuka Segala -galanya Di Myrise
    1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

    Alat panas

    VSCode Windows 64-bit Muat Turun

    VSCode Windows 64-bit Muat Turun

    Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

    EditPlus versi Cina retak

    EditPlus versi Cina retak

    Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

    SublimeText3 Linux versi baharu

    SublimeText3 Linux versi baharu

    SublimeText3 Linux versi terkini

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    DVWA

    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