Telliot: Gunakan logging yang konsisten alih-alih printf di mana-mana.

Dibuat pada 26 Sep 2020  ·  9Komentar  ·  Sumber: tellor-io/telliot

Basis kode memiliki printf di banyak tempat yang mudah untuk memulai, tetapi ketika mem-parsing atau memfilter log, itu memunculkan banyak masalah di kemudian hari dengan pemantauan dan penelusuran.

logger harus diinisialisasi dalam paket utama dan kemudian diteruskan ke semua konstruktor paket.

Ini adalah paket logging yang sangat bagus
github.com/go-kit/kit/log

untuk contoh bagaimana menerapkan lihat proyek thanos atau prometheus.

semua printf-s yang dikomentari dapat diganti dengan log debug sehingga ini hanya ditampilkan saat debugging diaktifkan.
level.Debug(logger).Log("msg", "debug")

Penting! Periksa pedoman pengkodean proyek
https://github.com/tellor-io/telliot/blob/master/docs/coding-style-guide.md

good first issue help wanted .high

Semua 9 komentar

Saya akan mengambil yang ini hari ini!

Pembaruan: ini sebagian dilakukan, tetapi masih ada beberapa tempat dengan printf dan logrus.
TL-DR perlu menggunakan github.com/go-kit/kit/log di mana-mana. Itu perlu diteruskan sebagai argumen saat menginisialisasi komponen.

Status Masalah: 1. Buka 2. Mulai 3. Dikirim 4. Selesai


__Masalah ini sekarang memiliki dana 0,1 ETH (114,26 USD @ $1142,63/ETH) yang melekat padanya sebagai bagian dari dana Tellor-io.__

@krasi-georgiev Saya ingin mengambil ini tetapi saya setelah membaca saran Anda tentang Gitcoin dan membaca kode Telliot saya akan mengatakan bahwa alih-alih mengubah semua komentar fmt.Printf ke level.Debug(logger).Log(... .) kita harus memutuskan pada setiap situasi apa yang lebih masuk akal dari perspektif pengguna.
Saya akan menggunakan debug log ketika output harus berguna untuk memeriksa masalah, lebih dari sudut pandang pengembang, tetapi situasi di mana pengguna mengharapkan output ke konsol, harus tingkat INFO. Seperti misalnya
https://github.com/tellor-io/telliot/blob/master/pkg/ops/disputeOps.go#L249 -L255

    fmt.Printf("Dispute %s (%s):\n", dispute.DisputeId.String(), descString)
    fmt.Printf("    Accused Party: %s\n", reportedAddr.Hex())
    fmt.Printf("    Disputed by: %s\n", reportingMiner.Hex())
    fmt.Printf("    Created on:  %s\n", createdTime.Format("3:04 PM January 02, 2006 MST"))
    fmt.Printf("    Fee: %s TRB\n", util.FormatERC20Balance(uintVars[8]))
    fmt.Printf("    \n")
    fmt.Printf("    Value disputed for requestID %d:\n", dispute.RequestId.Uint64())

Mohon koreksi saya jika saya salah. Terima kasih!

ya sangat benar! Juga aturan lain adalah bahwa log terjadi sekali saat start up, itu baik-baik saja untuk menjadi info, tetapi jika itu terjadi berkali-kali dalam satu lingkaran kecuali sangat penting dalam banyak kasus ini terlalu banyak kebisingan dan itu harus di-debug.

@krasi-georgiev Ya, masuk akal untuk tidak membanjiri pengguna, tetapi saya pikir dalam situasi di mana Anda ingin menganalisis log dengan alat, mengubah perilaku dapat membingungkan karena itulah satu-satunya umpan balik yang Anda miliki untuk analisis Anda, tetapi bagaimanapun juga kita akan mendapatkan keseimbangan yang tepat saya pikir. Saya akan melakukan beberapa perubahan di sini dan saat saya mempelajari lebih lanjut tentang proyek ini, kami akan menemukan apa yang berhasil untuk pengalaman pengguna yang baik.

setelah ini selesai juga harus menambahkan PR yang sama beberapa linting lagi ke makefile seperti

go-lint: check-git deps $(GOLANGCI_LINT) $(FAILLINT)
    $(call require_clean_work_tree,'detected not clean master before running lint, previous job changed something?')
    <strong i="6">@echo</strong> ">> verifying modules being imported"
    @$(FAILLINT) -paths "errors=github.com/pkg/errors" ./...
    @$(FAILLINT) -paths "fmt.{Print,Printf,Println,Sprint}" -ignore-tests ./...
    <strong i="7">@echo</strong> ">> linting all of the Go files GOGC=${GOGC}"
    @$(GOLANGCI_LINT) run
    <strong i="8">@echo</strong> ">> ensuring Copyright headers"
    <strong i="9">@go</strong> run ./scripts/copyright
    $(call require_clean_work_tree,'detected files without copyright, run make lint and commit changes')

2 garis etra adalah:

    @$(FAILLINT) -paths "errors=github.com/pkg/errors" ./...
    @$(FAILLINT) -paths "fmt.{Print,Printf,Println,Sprint}" -ignore-tests ./...

Ini akan menegakkan bahwa tidak ada pernyataan cetak di mana pun dan juga bahwa pkg/errors digunakan di mana saja

Status Masalah: 1. Buka 2. Mulai 3. Dikirim 4. Selesai


__Pekerjaan telah dimulai__.

Pengguna ini masing-masing mengklaim bahwa mereka dapat menyelesaikan pekerjaan dalam 265 tahun, 6 bulan dari sekarang.
Silakan tinjau rencana aksi mereka di bawah ini:

1) g33kidd telah melamar untuk mulai bekerja _(Hanya menyetujui pekerja | menolak pekerja )_.

Saya akan mencoba ini, sepertinya hal yang menarik untuk dilakukan.
2) voanhcung telah melamar untuk mulai bekerja _(Hanya menyetujui pekerja | menolak pekerja )_.

Ok [email protected]......................
3) therocketcat telah disetujui untuk mulai bekerja.

Saya melihat basis kode dan proyek contoh yang disebutkan sebelumnya yang Anda sebutkan.

Dari contoh yang saya kumpulkan bahwa jika fungsi yang menggunakan printf tidak memiliki konstruktor maka logger harus disuntikkan ketergantungan ke dalam fungsi itu sendiri. Jika ini bukan masalahnya, maka saya ingin klarifikasi di sana.

Dan dalam paket utama (telliot/cmd/telliot/main.go) mereka akan diatur menggunakan fungsi SetupLogger dari util dan diteruskan ke konstruktor atau disuntikkan langsung ke fungsi (sebagai parameter pertama).

Juga melihat basis kode saya tidak dapat menemukan printfs yang dikomentari, jadi saya berasumsi maksud Anda printfs secara umum?

Terbuka untuk membahas ini lebih lanjut jika saya salah memahami tugas RocketCat#3507
4) mendesfabio telah melamar untuk mulai bekerja _(Hanya menyetujui pekerja | menolak pekerja )_.

Saya baru saja memeriksa repo dan sepertinya beberapa printf-s diganti (dan itu membantu saya memahami bagaimana melakukannya). Kami masih memiliki 10 file dengan printf-s dan saya akan mengubahnya.
5) rodrigoadriandiaz telah melamar untuk mulai bekerja _(Hanya menyetujui pekerja | menolak pekerja )_.

saya bisa melakukan ini, mengganti semua panggilan ke printf untuk implementasi paket logging yang disebutkan di atas, saya bisa mulai mengerjakan ini besok
6) raulcorreia7 telah melamar untuk mulai bekerja _(Hanya menyetujui pekerja | menolak pekerja )_.

Hai,
Ini akan menjadi tidak punya otak,
DM saya.
7) coder4520 telah melamar untuk mulai bekerja _(Hanya menyetujui pekerja | menolak pekerja )_.

Saya kira ini akan menjadi proyek pertama yang sangat bagus untuk memulai.
8) adiprerepa telah melamar untuk mulai bekerja _(Hanya menyetujui pekerja | menolak pekerja )_.

Ini akan sangat mudah - cukup temukan dan ganti printf ke logging dan kemudian periksa ulang.
9) xf3rno telah melamar untuk mulai bekerja _(Hanya menyetujui pekerja | menolak pekerja )_.

Saya akan melakukan tugas yang diminta; ganti semua logging saat ini dengan perpustakaan golang logger google (cukup ringan: https://github.com/google/logger), dan cakupan setiap pesan tergantung pada konteksnya (debug, peringatan, dll).

Pelajari lebih lanjut di halaman Detail Masalah Gitcoin .

Status Masalah: 1. Buka 2. Mulai 3. Dikirim 4. Selesai


__Kerja untuk 0,1 ETH (167,47 USD @ $1674,72/ETH) telah dikirimkan oleh__:


Apakah halaman ini membantu?
0 / 5 - 0 peringkat