Twiggy

Software screenshot:
Twiggy
Rincian Software:
Versi: 0.4.4
Tanggal Upload: 11 May 15
Pengembang: Peter Fein
Lisensi: Gratis
Popularitas: 6

Rating: nan/5 (Total Votes: 0)

Twiggy adalah proyek tahap awal untuk membangun paket logging lebih Pythonic.
Penggunaan:
Membuat karya layar:
>>> Import sys; sys.stderr = sys.stdout
Pengaturan sederhana
Dalam main.py Anda:
>>> Impor lemah
>>> Twiggy.quick_setup ()
Logging Pesan
>>> Dari lemah impor *
Antarmuka utama adalah log sihir:
>>> Log #doctest: + elipsis

Ia bekerja di luar kotak, dengan menggunakan tingkat standar:
>>> Log.debug ("Anda mungkin tidak peduli ')
DEBUG: Anda mungkin tidak peduli
>>> Log.error ('OMFG! Pants on fire!')
ERROR: OMFG! Celana di atas api!
Hal ini mendukung berbagai format string, default ke gaya baru:
>>> Log.info ('saya memakai {0} pada saya {} mana', 'celana', di mana = 'kaki')
INFO: Saya memakai celana di kaki saya
Gaya lama bekerja dengan baik meskipun:
>>> Log.options (style = 'persen') info. ('Aku suka% s', "sepeda")
INFO: Saya suka sepeda
Seperti halnya template:
>>> Log.options (style = 'dolar') info. ('$ Apa kill', apa = 'Mobil')
INFO: Mobil membunuh
Anda dapat nama penebang Anda:
>>> Mylog = log.name ('alfredo')
>>> Mylog.debug ('halo')
DEBUG: alfredo: hello
Tapi nama tidak ada hubungannya dengan objek; itu hanya untuk digunakan manusia:
>>> Mylog adalah log.name ('alfredo')
Palsu
Emitting Pesan
Emitter yang longgar ditambah:
>>> Twiggy.emitters #doctest: + elipsis
{'*': }
Anda dapat menetapkan min_level pada Emiten:
>>> Twiggy.emitters ['*']. Min_level = twiggy.Levels.INFO
>>> Log.debug ("Bantuan, bantuan saya sedang ditekan")
>>> Log.info ("Aku tidak cukup mati belum")
INFO: Saya tidak cukup mati belum
Anda dapat menyaring pada regexes, atau dengan fungsi sewenang-wenang:
>>> Twiggy.emitters ['*']. Filter = ". * Celana. *"
>>> Log.info ("Punya saya {0} pada", "celana")
INFO: Punya celana saya di
>>> Log.info ("Punya saya {0} pada", "baju")
Mari kita ulang semua bahwa:
>>> Twiggy.emitters ['*'] Filter = True.
>>> Twiggy.emitters ['*']. Min_level = twiggy.Levels.DEBUG
keluaran yang lebih baik
Baris ditekan secara default; yang dapat dimatikan per-pesan:
>>> Log.info ('user ninput nannoys nus')
INFO: user ninput nannoys nus
>>> Log.options (suppress_newlines = False) .info ('kita ndeal')
INFO: kita
transaksi
Pengecualian diawali. Bisa juga lewat exc_info. Gunakan ' n' sebagai awalan untuk melipat ke dalam satu baris:
>>> Coba:
... 1/0
... Kecuali:
... Log.trace ('error') peringatan ('oh noes') #doctest:. + Elipsis
PERINGATAN: oh noes
TRACE Traceback (paling panggilan terakhir terakhir):
TRACE File "", baris 2, di
TRACE 1/0
TRACE ZeroDivisionError: pembagian integer atau modulo dengan nol
Cara Chaining
Saya suka ini dirantai gaya banyak.
>>> Log.name ('benito'). Info ('hi ada)
INFO: benito: hi ada
Itu membuat logging terstruktur mudah:
>>> Log.fields (jalur = 42) .info ('Pergi untuk berjalan-jalan')
INFO: jalan = 42: Pergi untuk berjalan-jalan
Pintas. Besar untuk statistik runtime pertemuan.
>>> Log.struct (jalur = 42, lumba-lumba = 'bersyukur')
INFO: lumba-lumba = bersyukur: jalan = 42:
Parsial mengikat dapat berguna untuk webapps:
>>> Per_request_log = log.fields (request_id = '12345')
>>> Per_request_log.fields (baris = 100, user = 'terang') info. ('Frobnicating database')
INFO: request_id = 12345: baris = 100: user = frank: Database frobnicating
>>> Per_request_log.fields (bytes = 5678) .info ('mengirimkan halaman lebih tabung')
INFO: bytes = 5678: request_id = 12345: mengirim halaman lebih tabung
Dirantai gaya mengagumkan:
>>> ('Seksi' celana =) info log.name ('Donjuan'). Bidang. ("Halo, {} yang ingin {} apa?", Yang = 'wanita', apa = 'tarian')
INFO: Donjuan: celana = sexy: hello, wanita ingin berdansa?
Dinamis!
Setiap fungsi dalam args / bidang dipanggil dan nilai substitued:
>>> Os impor
>>> Dari twiggy.lib impor thread_name
>>> Thread_name ()
'Mainthread'
>>> Log.fields (pid = os.getpid) .info ("Aku di thread {0}", thread_name) #doctest: + elipsis
INFO: pid = 1076: aku di thread mainthread
Hal ini dapat berguna dengan penebang sebagian terikat, yang mari kita melakukan beberapa hal keren:
>>> Kelas ThreadTracker (objek):
... Def __init __ (self, obj):
... Diri .__ obj = obj
... # Logger sebagian terikat
... Diri .__ log = log.name ("tracker"). Bidang (obj_id = id (obj), benang = thread_name)
... Diri .__ log.debug ("mulai pelacakan")
... Def __getattr __ (self, attr):
... Diri .__ log.debug ("diakses {0}", attr)
... Pulang getattr (self .__ obj, attr)
...
>>> Kelas Bunch (objek):
... Lulus
...
>>> Foo = Bunch ()
>>> Foo.bar = 42
>>> Dilacak = ThreadTracker (foo)
DEBUG: tracker: obj_id = 14063980: benang = mainthread: mulai pelacakan
>>> Tracked.bar
DEBUG: tracker: obj_id = 14063980: benang = mainthread: bar diakses
42
>>> Impor threading
>>> T = threading.Thread (target = lambda: tracked.bar * 2, name = "TheDoubler")
>>> T.start ()
DEBUG: tracker: obj_id = 14063980: benang = TheDoubler: bar diakses
Jika Anda benar-benar ingin log callable, cetak ulang () atau bungkus dalam lambda.
Optimasi
Sebagai optimasi, min_level yang dapat diatur pada penebang:
>>> Mylog.min_level = twiggy.Levels.INFO
>>> Mylog.info ("Anda lihat ini")
INFO: alfredo: Anda melihat ini
>>> Mylog.debug ("Ini adalah tersembunyi")
Mereka juga mengambil filter yang beroperasi pada format_spec. Penggunaan kasus secara efisien mematikan pesan tertentu di perpustakaan yang melakukan sesuatu yang bodoh:
>>> Mylog.filter = lambda s: "shenanigans" tidak dalam s
>>> Mylog.info ("Mulai kekonyolan")
INFO: alfredo: Mulai kekonyolan
>>> Untuk i di xrange (3): # untuk nilai-nilai besar dari 3
... Mylog.info ("saya sebut shenanigans!")
>>> Mylog.info ("End kekonyolan")
INFO: alfredo: Akhir kekonyolan

Persyaratan :

  • Python

Perangkat lunak lain dari pengembang Peter Fein

Petapass
Petapass

11 May 15

Twiggy
Twiggy

12 Apr 15

Komentar untuk Twiggy

Komentar tidak ditemukan
Tambahkan komentar
Aktifkan gambar!