Telliot: استخدم التسجيل المتوافق بدلاً من printf في كل مكان.

تم إنشاؤها على ٢٦ سبتمبر ٢٠٢٠  ·  9تعليقات  ·  مصدر: tellor-io/telliot

يحتوي Codeebase على printf في العديد من الأماكن التي يسهل البدء بها ، ولكن عند تحليل السجلات أو ترشيحها ، فإنها تثير العديد من المشكلات فيما بعد مع المراقبة والتتبع.

يجب تهيئة المسجل في الحزمة الرئيسية ثم تمريره إلى جميع منشئي الحزم.

هذه حزمة تسجيل جيدة جدًا
github.com/go-kit/kit/log

للحصول على مثال حول كيفية تنفيذ إلقاء نظرة على مشاريع ثانوس أو بروميثيوس.

يمكن استبدال جميع ملفات printf-s التي تم التعليق عليها بسجلات تصحيح الأخطاء بحيث يتم عرضها فقط عند تمكين تصحيح الأخطاء.
level.Debug(logger).Log("msg", "debug")

مهم! تحقق من إرشادات ترميز المشروع
https://github.com/tellor-io/telliot/blob/master/docs/coding-style-guide.md

good first issue help wanted .high

ال 9 كومينتر

سآخذ هذا اليوم!

تحديث: يتم هذا جزئيًا ، ولكن لا يزال هناك عدد قليل من الأماكن التي تحتوي على printf و logrus.
تحتاج TL-DR إلى استخدام github.com/go-kit/kit/log في كل مكان. يجب تمريره كحجة عند تهيئة المكونات.

حالة المشكلة: 1. فتح 2. بدأ 3. تم الإرسال 4. تم


__هذا الإصدار يحتوي الآن على تمويل بقيمة 0.1 ETH (114.26 USD @ $ 1142.63 / ETH) مرفق به كجزء من صندوق Tellor-io .__

@ krasi-georgiev أود أن أتناول هذا ولكني بعد قراءة اقتراحاتك بشأن Gitcoin وقراءة كود Telliot ، أود أن أقول إنه بدلاً من تغيير جميع التعليقات fmt.Printf إلى level.Debug (logger). سجل (... .) يجب أن نقرر في كل موقف ما هو أكثر منطقية من منظور المستخدم.
سأستخدم تصحيح أخطاء السجل عندما يكون الناتج مفيدًا لفحص مشكلة ، أكثر من وجهة نظر المطور ، ولكن المواقف التي يتوقع فيها المستخدم إخراجًا إلى وحدة التحكم ، يجب أن تكون على مستوى INFO. مثلا
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())

أرجوا أن تصحح لي إذا كنت مخطئا. شكرا!

نعم صحيح جدا! هناك أيضًا قاعدة أخرى وهي أن السجل يحدث مرة واحدة عند بدء التشغيل ، فمن الجيد أن تكون معلومات ، ولكن إذا حدث ذلك عدة مرات في حلقة ما لم يكن مهمًا للغاية في معظم الحالات ، فهذا كثير جدًا من الضوضاء ويجب أن يتم تصحيحه.

@ krasi-georgiev نعم ، من المنطقي عدم إرباك المستخدم ، لكنني أعتقد أنه في المواقف التي تريد فيها تحليل السجلات باستخدام أداة ، قد يكون تغيير السلوك محيرًا لأن هذه هي التعليقات الوحيدة التي لديك لتحليلك ، ولكن على أي حال سوف نحقق التوازن الصحيح على ما أعتقد. سأقوم ببعض التغييرات هنا ، وكلما تعلمت المزيد عن هذا المشروع ، سنجد ما يصلح لتجربة مستخدم جيدة.

بمجرد الانتهاء من ذلك ، يجب أيضًا إضافة المزيد في نفس العلاقات العامة إلى ملف makefile مثل

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 خطوط إيترا هي:

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

سيؤدي هذا إلى فرض عدم وجود بيانات طباعة في أي مكان وأيضًا استخدام pkg/errors أي مكان

حالة المشكلة: 1. فتح 2. بدأ 3. تم الإرسال 4. تم


__بدأ العمل__.

ادعى كل من هؤلاء المستخدمين أنه يمكنهم إكمال العمل بحلول 265 عامًا ، 6 أشهر من الآن.
يرجى مراجعة خطط العمل الخاصة بهم أدناه:

1) تقدم g33kidd بطلب لبدء العمل _ (الممولين فقط: الموافقة على العامل | رفض العامل ) _.

سآخذ طعنة في هذا ، بدا الأمر وكأنه شيء مثير للاهتمام.
2) تقدم voanhcung لبدء العمل _ (الممولون فقط: الموافقة على العامل | رفض العامل ) _.

طيب [email protected] .......................
3) تمت الموافقة على therocketcat لبدء العمل.

لقد ألقيت نظرة على قاعدة الكود والمشاريع التي ذكرتها سابقًا.

من الأمثلة التي جمعتها أنه إذا كانت الوظائف التي تستخدم printf لا تحتوي على مُنشئ ، فيجب أن يكون المُسجِّل عبارة عن تبعية تُحقن في الوظيفة نفسها. إذا لم يكن الأمر كذلك ، فأنا أود التوضيح هناك.

وفي الحزمة الرئيسية (telliot / cmd / telliot / main.go) سيتم إعدادها باستخدام وظيفة SetupLogger من الاستخدام وتمريرها إما إلى المُنشئ أو حقنها مباشرة في الوظيفة (كمعامل أول).

بالنظر أيضًا إلى قاعدة الشفرة ، لا يمكنني العثور على أي طباعة تم التعليق عليها ، لذا أفترض أنك تقصد printfs بشكل عام؟

افتح لمناقشة هذا الأمر أكثر إذا كنت قد أسأت فهم مهمة RocketCat # 3507
4) تقدم mendesfabio بطلب لبدء العمل _ (الممولين فقط: الموافقة على العامل | رفض العامل ) _.

لقد تحققت للتو من الريبو ويبدو أنه تم استبدال بعض الطابعات (وقد ساعدني ذلك في فهم كيفية القيام بذلك). لا يزال لدينا 10 ملفات مع printf-s وسأغير ذلك.
5) تقدمت شركة rodrigoadriandiaz بطلب لبدء العمل _ (الممولون فقط: الموافقة على العامل | رفض العامل ) _.

يمكنني القيام بذلك ، واستبدال جميع المكالمات إلى printf لتنفيذ حزمة التسجيل المذكورة أعلاه ، يمكنني البدء في العمل على هذا غدًا
6) تقدم raulcorreia7 بطلب لبدء العمل _ (الممولين فقط: الموافقة على العامل | رفض العامل ) _.

أهلا،
سيكون هذا بلا تفكير ،
DM لي.
7) تم تطبيق coder4520 لبدء العمل _ (الممولين فقط: الموافقة على العامل | رفض العامل ) _.

أعتقد أن هذا سيكون أول مشروع جيد حقًا للبدء به.
8) تقدمت adiprerepa بطلب لبدء العمل _ (الممولين فقط: الموافقة على العامل | رفض العامل ) _.

سيكون هذا سهلاً للغاية - ما عليك سوى البحث عن printf واستبداله في التسجيل ثم التحقق مرة أخرى.
9) تقدم xf3rno بطلب لبدء العمل _ (الممولين فقط: الموافقة على العامل | رفض العامل ) _.

سأقوم بالمهمة المطلوبة ؛ استبدل جميع عمليات التسجيل الحالية بمكتبة google golang logger (خفيفة الوزن تمامًا: https://github.com/google/logger) ، ونطاق كل رسالة اعتمادًا على السياق (تصحيح الأخطاء والتحذير وما إلى ذلك).

تعرف على المزيد

حالة المشكلة: 1. فتح 2. بدأ 3. تم الإرسال 4. تم


__العمل مقابل 0.1 ETH (167.47 USD @ 1674.72 / ETH) تم تقديمه بواسطة _:


هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات