Cara menggunakan fungsi log di python

By On Friday, September 23rd, 2022 Categories : Tanya Jawab

Cara menggunakan fungsi log di python – Apa kabar sista dan agan semua, Makasih banyak sudah mau datang di halaman blog trendwisata.com ini. Di hari yang cerah ini, kita di web trendwisata.com mau menampilkan ulasan yang oke banget yang menjelaskan tentang Cara menggunakan fungsi log di python. Sebaiknya Agan simak setelah ini:

Logging Python: Tutorial Mendalam – Modul logging Python dilengkapi dengan pustaka standar dan menyediakan fitur logging dasar. Dengan mengaturnya dengan benar, pesan log dapat

Saat aplikasi menjadi lebih kompleks, memiliki bagus log bisa sangat berguna, tidak hanya saat debugging tetapi juga untuk memberikan wawasan
tentang masalah/kinerja aplikasi.

Pustaka standar Python hadir dengan a masuk modul yang menyediakan sebagian besar fitur logging dasar. Dengan mengaturnya dengan benar, pesan log dapat membawa banyak informasi berguna tentang kapan dan di mana log diaktifkan serta konteks log, seperti proses/utas yang sedang berjalan.

Terlepas dari kelebihannya, modul logging sering diabaikan karena membutuhkan waktu untuk menyiapkan dengan benar dan, meskipun lengkap, menurut saya, dokumen logging resmi di
https://docs.python.org/3/library/logging.html tidak benar-benar memberikan praktik terbaik logging atau menyoroti beberapa kejutan logging.

Tutorial logging Python ini tidak dimaksudkan sebagai dokumen lengkap tentang modul logging melainkan panduan memulai yang memperkenalkan beberapa konsep logging serta beberapa gotcha yang harus
diperhatikan. Postingan akan diakhiri dengan praktik terbaik dan berisi beberapa petunjuk ke topik logging yang lebih lanjut.

netflix/tv8 masukkan kode

Harap perhatikan bahwa semua cuplikan kode di pos menganggap bahwa Anda telah mengimpor
modul logging:

import logging

Konsep untuk Pencatatan Python

Bagian ini memberikan gambaran tentang beberapa konsep yang sering ditemui dalam modul logging.

Level Pencatatan Python

Level log sesuai dengan pentingnya log yang diberikan: log kesalahan harus lebih mendesak daripada log peringatan, sedangkan log debug harus berguna hanya saat men-debug aplikasi.

Ada enam level log di Python; setiap level dikaitkan dengan bilangan bulat yang menunjukkan tingkat keparahan
log: NOTSET=0, DEBUG=10, INFO=20, WARN=30, ERROR=40, dan CRITICAL=50.

javascript json encode array

Semua level cukup mudah (DEBUG

Pemformatan Pencatatan Python

Pemformat log pada
dasarnya memperkaya pesan log dengan menambahkan informasi konteks ke dalamnya. Akan berguna untuk mengetahui kapan log dikirim, di mana (file Python, nomor baris, metode, dll.), dan konteks tambahan seperti utas dan proses (bisa sangat berguna saat men-debug aplikasi multithread).

Misalnya, ketika log hello world dikirim melalui pemformat log:

'%(asctime)s — %(name)s — %(levelname)s — %(funcName)s:%(lineno)d — %(message)s'

itu akan menjadi

2018-02-07 19:47:41,864 - a.b.c - WARNING - :1 - hello world

ikon reaksi-asli

Penangan Pencatatan Python

Handler log adalah komponen yang secara efektif menulis/menampilkan log: Menampilkannya di konsol (melalui StreamHandler), dalam file (melalui FileHandler), atau bahkan dengan mengirimkan email kepada Anda melalui SMTPHandler, dll.

Setiap penangan log memiliki 2 bidang penting:

  • Pemformat yang menambahkan informasi
    konteks ke log.
  • Level log yang menyaring log yang levelnya lebih rendah. Jadi penangan log dengan level INFO tidak akan menangani log DEBUG.

Pustaka standar menyediakan beberapa penangan yang seharusnya cukup untuk kasus penggunaan umum:
https://docs.python.org/3/library/logging.handlers.html#module-logging.handlers . Yang paling umum adalah StreamHandler dan FileHandler:

console_handler = logging.StreamHandler() file_handler = logging.FileHandler('filename')

Pencatat Python

Logger mungkin adalah yang paling sering digunakan secara langsung dalam kode dan juga yang paling
rumit. Logger baru dapat diperoleh dengan:

toto_logger = logging.getLogger('toto')

Logger memiliki tiga bidang utama:

  • Propagate: Memutuskan apakah log harus disebarkan ke induk logger. Secara default, nilainya adalah True.
  • Level A: Seperti level pengendali log, level logger digunakan untuk menyaring log yang kurang penting. Kecuali, tidak seperti pengendali log, level hanya diperiksa di pencatat anak; setelah log disebarkan ke induknya, levelnya tidak akan diperiksa. Ini lebih merupakan perilaku yang
    tidak intuitif.
  • Handlers: Daftar handler yang akan dikirimi log ketika sampai ke logger. Hal ini memungkinkan penanganan log yang fleksibel—misalnya, Anda dapat memiliki penangan log file yang mencatat semua log DEBUG dan penangan log email yang hanya akan digunakan untuk log CRITICAL. Dalam hal ini, hubungan logger-handler mirip dengan hubungan penerbit-konsumen: Sebuah log akan disiarkan ke semua penangan setelah melewati pemeriksaan tingkat logger.

Seorang pencatat adalah unik by name, artinya jika logger dengan nama toto telah dibuat, maka pemanggilan |_+_| akan mengembalikan objek yang sama:

bereaksi komponen unggah gambar

logging.getLogger('toto')

Seperti yang mungkin sudah Anda duga, penebang memiliki hierarki. Di atas hierarki adalah
root logger, yang dapat diakses melalui logging.root. Logger ini dipanggil ketika metode seperti |_+_| digunakan. Secara default, level root log adalah WARN, jadi setiap log dengan level yang lebih rendah (misalnya melalui |_+_|) akan diabaikan. Keistimewaan lain dari root logger adalah bahwa handler defaultnya akan dibuat saat pertama kali log dengan level lebih besar dari WARN dicatat. Menggunakan logger root secara langsung atau tidak langsung melalui metode seperti |_+_| umumnya tidak
dianjurkan.

Secara default, ketika logger baru dibuat, induknya akan disetel ke logger root:

cara membeli safe moon crypto di coinbase

assert id(logging.getLogger('toto')) == id(logging.getLogger('toto'))

Namun, logger menggunakan notasi titik, artinya logger dengan nama a.b akan menjadi anak dari logger a. Namun, ini hanya berlaku jika logger a telah dibuat, jika tidak, ab parent masih menjadi root.

logging.debug()

Ketika
logger memutuskan apakah log harus lulus sesuai dengan pemeriksaan level (misalnya, jika level log lebih rendah dari level logger, log akan diabaikan), ia menggunakan level efektifnya alih-alih level sebenarnya. Level efektif sama dengan level logger jika levelnya bukan NOTSET, yaitu semua nilai dari DEBUG hingga CRITICAL; namun, jika level logger NOTSET, maka level efektif akan menjadi level ancestor pertama yang memiliki level non-NOTSET.

Secara default, logger baru memiliki level
NOTSET, dan karena root logger memiliki level WARN, level efektif logger adalah WARN. Jadi meskipun logger baru memiliki beberapa penangan yang terpasang, penangan ini tidak akan dipanggil kecuali jika tingkat log melebihi PERINGATAN:

logging.info('info')

Secara default, level logger akan digunakan untuk memutuskan lintasan log: Jika level log lebih rendah dari level logger, log akan diabaikan.

Praktik Terbaik Pencatatan Python

Modul logging memang sangat berguna, tetapi berisi beberapa
kebiasaan yang dapat menyebabkan sakit kepala berjam-jam bahkan untuk yang terbaik Python pengembang. Berikut adalah praktik terbaik untuk menggunakan modul ini menurut saya:

  • Konfigurasi root logger tetapi jangan pernah menggunakannya dalam kode Anda—misalnya, jangan pernah memanggil fungsi seperti |_+_|, yang sebenarnya memanggil root logger di belakang layar. Jika Anda ingin menangkap
    pesan kesalahan dari pustaka yang Anda gunakan, pastikan untuk mengonfigurasi logger root untuk menulis ke file, misalnya, untuk mempermudah proses debug. Secara default, root logger hanya menghasilkan |_+_|, sehingga log bisa hilang dengan mudah.
  • Untuk menggunakan logging, pastikan untuk membuat logger baru dengan menggunakan |_+_|. Saya biasanya menggunakan |_+_| sebagai nama logger, tapi apa pun bisa digunakan, asalkan konsisten. Untuk menambahkan lebih banyak penangan, saya biasanya
    memiliki metode yang mengembalikan logger (Anda dapat menemukan intinya di https://Gist.github.com/nguyenkims/e92df0f8bd49973f0c94bddf36ed7fd0 ).

logging.debug()

Setelah Anda dapat membuat logger baru dan menggunakannya:

lab = logging.getLogger('a.b') assert lab.parent == logging.root # lab's parent is indeed the root logger

  • Gunakan kelas RotatingFileHandler, seperti
    TimedRotatingFileHandler yang digunakan dalam contoh alih-alih FileHandler, karena ini akan memutar file untuk Anda secara otomatis ketika file mencapai batas ukuran atau melakukannya setiap hari.
  • Gunakan alat seperti Sentry, Airbrake, Raygun, dll., untuk menangkap log kesalahan secara otomatis untuk Anda. Ini sangat berguna dalam konteks aplikasi web, di mana log bisa sangat bertele-tele dan log kesalahan bisa hilang dengan mudah. Keuntungan lain menggunakan alat ini adalah Anda bisa
    mendapatkan detail tentang nilai variabel dalam kesalahan sehingga Anda dapat mengetahui URL apa yang memicu kesalahan, pengguna mana yang bersangkutan, dll.

#python

Cara menggunakan fungsi log di python | admin | 4.5