بررسی فایل lightningd.log برای هر کسی که یک نود Core Lightning (CLN) را اجرا میکند، بسیار حیاتی است. این فایل در واقع قلب تپنده نود شما و یک منبع اطلاعاتی جامع است که به شما کمک میکند تا از عملکرد صحیح نود خود اطمینان حاصل کنید.
چرا بررسی lightningd.log مهم است؟
۱. عیبیابی و رفع خطا: مهمترین کاربرد لاگها، پیدا کردن و رفع مشکلات است. اگر نود شما به درستی کار نمیکند، پرداختها را ارسال یا دریافت نمیکند، یا در اتصال به نودهای دیگر مشکل دارد، لاگها اولین جایی هستند که باید به آنها نگاه کنید. پیامهای خطای موجود در لاگ، سرنخهای ارزشمندی درباره ریشه مشکل میدهند.
۲. نظارت بر عملکرد نود: لاگها به شما اجازه میدهند تا وضعیت نود خود را لحظه به لحظه بررسی کنید. با مشاهده لاگها میتوانید به اطلاعات زیر دسترسی پیدا کنید:
- فعالیتهای شبکه: اتصالها، قطع اتصالها، و پیامهای تبادل شده با سایر نودها.
- نرخ کارمزد (Feerate): تخمینهای بهروز شده برای کارمزد تراکنشها در شبکه بیتکوین.
- وضعیت کانالها: وضعیت باز و بسته شدن کانالها، و تراکنشهای کامیت (commit) که نشاندهنده تغییرات در وضعیت کانالها هستند.
۳. افزایش امنیت: لاگها میتوانند به شما کمک کنند تا فعالیتهای مشکوک را شناسایی کنید. برای مثال، اگر نود شما به طور مکرر با آدرسهای IP ناشناس تلاش به اتصال میکند یا پیامهای غیرعادی دریافت میکند، میتوانید با بررسی لاگها از این موارد مطلع شوید.
۴. درک عمیقتر از شبکه: با مطالعه لاگها، میتوانید درک بهتری از نحوه عملکرد پروتکل لایتنینگ و فرآیندهای داخلی CLN به دست آورید. این دانش برای هر کسی که میخواهد به صورت حرفهای در زمینه لایتنینگ فعالیت کند، ضروری است.
۵. اطمینان از همگامسازی: لاگها به شما نشان میدهند که نود شما با بلاکچین بیتکوین و شبکه لایتنینگ به درستی همگامسازی شده است. این اطمینان برای عملکرد صحیح نود و جلوگیری از مشکلاتی مانند بسته شدن کانالها به دلیل قدیمی بودن اطلاعات بسیار مهم است.
اجراگر CLN فقط از چهار گزینه برای پیکربندی لاگ پشتیبانی میکند.
log–level=LEVEL[:SUBSYSTEM][:PATH]
log–prefix=PREFIX
log–file=PATH
log–timestamps=BOOL
Core Lightning (CLN) به طور مستقیم قابلیتی برای نمایش زمان محلی در لاگها ارائه نمیدهد و از زمان UTC برای ثبت لاگها استفاده میکند. بنابراین به صورت پیشفرض، قالب زمان در لاگهای CLN قابل تغییر نیست. با این حال، میتوانید این کار را به صورت محلی با استفاده از هر ابزار مدیریت لاگ یا یک اسکریپت Bash سفارشی انجام دهید.
فرض کنید که میخواهید لاگهای مربوط به یک کانال خاص را مشاهده کنید و زمان آنها را به وقت محلی تبدیل کنید. میتوانید از دستور زیر استفاده کنید.
1 2 3 4 5 | tail –f ~/.lightning/lightning.log | while read line; do timestamp=$(echo “$line” | grep –oE ‘[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3}Z’) local_time=$(date –d “$timestamp” +“%Y-%m-%d %H:%M:%S”) echo “${line/$timestamp/$local_time}” done |
برای تبدیل این دستور به یک اسکریپت Bash با قابلیت استفاده از سوییچهای tail، میتوانید از پارامترهای خط فرمان و توابع بَش استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #!/bin/bash # پارامترهای پیشفرض log_file=“$HOME/.lightning/lightningd.log” channel_id=“” tail_options=“-f” # پردازش پارامترهای خط فرمان while [[ $# -gt 0 ]]; do case “$1” in –l|—log) log_file=“$2”; shift ;; –c|—channel) channel_id=“$2”; shift ;; –t|—tail) tail_options=“$2”; shift ;; *) echo “پارامتر نامعتبر: $1”; exit 1 ;; esac shift done # بررسی وجود فایل لاگ if [[ ! –f “$log_file” ]]; then echo “فایل لاگ یافت نشد: $log_file” exit 1 fi # اجرای دستور tail با سوییچهای مشخص شده tail $tail_options “$log_file” | while read line; do # فیلتر کردن لاگها بر اساس شناسه کانال (در صورت مشخص شدن) if [[ –n “$channel_id” ]]; then if [[ “$line” != *“$channel_id”* ]]; then continue fi fi # استخراج زمان UTC و تبدیل آن به زمان محلی timestamp=$(echo “$line” | grep –oE ‘[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3}Z’) if [[ –n “$timestamp” ]]; then local_time=$(date –d “$timestamp” +“%Y-%m-%d %H:%M:%S”) echo “${line/$timestamp/$local_time}” else echo “$line” fi done |
نحوه استفاده از اسکریپت:
- اسکریپت را در یک فایل با نام دلخواه (مثلاً cln_log_time.sh) ذخیره کنید.
- با استفاده از دستور chmod +x cln_log_time.sh، دسترسی اجرایی به اسکریپت بدهید.
- اسکریپت را با پارامترهای مورد نظر اجرا کنید.
- مشاهده لاگها با زمان محلی:
./cln_log_time.sh
- مشاهده لاگها با زمان محلی و فیلتر کردن بر اساس شناسه کانال:
./cln_log_time.sh -c 03e691f81f08c56fa876cc4ef5c9e8b727bd682cf35605be25d48607a802526053
- مشاهده 10 خط آخر لاگها با زمان محلی:
./cln_log_time.sh -t "-n 10"
- مشاهده لاگ یک فایل دیگر غیر از پیش فرض با زمان محلی:
./cln_log_time.sh -l /path/to/my/log/file.log
با استفاده از این اسکریپت، میتوانید لاگهای CLN را با زمان محلی و با انعطافپذیری بیشتری مشاهده کنید.
منابع:
- PersianLightning GitHub Repository lightning-log-scripts:
- Shahana Farooqui: Core Lightning (CLN) Telegram group, (27 Feb 2025)
- Ali2k: Persian Lightning Telegram group, (28 Feb 2025)
