LOGGER(1) أوامر المستخدم LOGGER(1)

الاسم

logger - أدخِل رسائل في سجل النظام

موجز

logger [خيارات] رسالة

الوصف

تنشئ أداة logger مدخلات في سجل النظام.

عند وجود معطى رسالة الاختياري، فإنه يُكتب في السجل. إذا لم يكن موجودًا، ولم يُعطَ الخيار -f أيضًا، فسيُسجل الدخل القياسي.

الخيارات

-d، --udp

استخدم مخططات البيانات (UDP) فقط. تُحاول عملية الاتصال مبدئيًا عبر منفذ syslog المحدد في /etc/services، وغالبًا ما يكون 514.

انظر أيضًا --server و --socket لتحديد مكان الاتصال.

-e، --skip-empty

تجاهل الأسطر الفارغة عند معالجة الملفات. يُعرف السطر الفارغ بأنه سطر لا يحتوي على أي محارف. وبالتالي، فإن السطر الذي يتكون من مسافات بيضاء فقط لا يُعتبر فارغًا. لاحظ أنه عند تحديد خيار --prio-prefix، لا تكون الأولوية جزءًا من السطر. وبذلك، يكون السطر الفارغ في هذا الوضع هو السطر الذي لا يحتوي على أي محارف بعد بادئة الأولوية (مثلًا، <13>).

-f، --file ملف

سجل محتويات ملف المحدد. لا يمكن دمج هذا الخيار مع رسالة من سطر الأوامر.

-i

سجل معرف العملية (PID) لعملية logger مع كل سطر.

--id[=معرف]

سجل معرف العملية (PID) لعملية logger مع كل سطر. عند تحديد المعطى الاختياري معرف، فإنه يُستخدم بدلًا من معرف العملية لأمر logger. يُوصى باستخدام --id=$$ (معرف العملية الأب PPID) في البرمجيات النصية التي ترسل رسائل متعددة.

لاحظ أن بنية تسجيل النظام (على سبيل المثال systemd عند الإنصات على /dev/log) قد تتبع بيانات اعتماد المقابس المحلية لتجاوز معرف العملية (PID) المحدد في الرسالة. يستطيع logger(1) ضبط بيانات اعتماد تلك المقابس على المعرف المعطى، ولكن فقط إذا كنت تملك صلاحيات الجذر وكانت العملية ذات المعرف المحدد موجودة، وإلا فلن تُعدل بيانات اعتماد المقبس وسيُتجاهل المشكل بصمت.

--journald[=ملف]

اكتب مدخلة في سجل systemd. تُقرأ المدخلة من ملف المعطى عند تحديده، وإلا فمن الدخل القياسي. يجب أن يبدأ كل سطر بحقل يقبله journald؛ انظر systemd.journal-fields(7) للتفاصيل. يُعد استخدام حقل MESSAGE_ID فكرة جيدة عمومًا، لأنه يجعل العثور على المدخلات سهلًا. أمثلة:
logger --journald <<end
MESSAGE_ID=67feb6ffbaf24c5cbec13c008dd72309
MESSAGE=The dogs bark, but the caravan goes on.
DOGS=bark
CARAVAN=goes on
end
logger --journald=entry.txt

لاحظ أن --journald سيتجاهل قيم الخيارات الأخرى، مثل الأولوية (priority). إذا كانت الأولوية مطلوبة، فيجب أن تكون ضمن الدخل وباستخدام حقل PRIORITY. سيؤدي التنفيذ البسيط لـ journalctl(1) إلى عرض حقل MESSAGE. استخدم journalctl --output json-pretty لرؤية بقية الحقول.

لتضمين أسطر جديدة في MESSAGE، حدد MESSAGE عدة مرات. يُعالج هذا كحالة خاصة، أما الحقول الأخرى فستُخزن كمصفوفة في السجل إذا ظهرت عدة مرات.

--msgid معرف-الرسالة

يضبط حقل MSGID الخاص بـ RFC 5424 https://tools.ietf.org/html/rfc5424. لاحظ أن مسافة المسافة غير مسموح بها داخل معرف-الرسالة. يُستخدم هذا الخيار فقط إذا حُدد --rfc5424 أيضاً؛ وإلا فسيُتجاهل بصمت.

-n، --server خادم

يُكتب إلى خادم سجل النظام البعيد المحدد بدلاً من مقبس سجل النظام. ما لم يُحدد --udp أو --tcp، ستحاول أداة logger أولاً استخدام UDP، ولكن في حال فشل ذلك، ستُحاول إجراء اتصال TCP.

--no-act

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

--octet-count

يستخدم طريقة تأطير عد الثمانيات RFC 6587 https://tools.ietf.org/html/rfc6587 لإرسال الرسائل. عند عدم استخدام هذا الخيار، يكون المبدئي هو عدم وجود تأطير على UDP، وتأطير RFC6587 غير الشفاف (المعروف أيضاً باسم حشو الثمانيات) على TCP.

-P، --port منفذ

يستخدم منفذ المحدد. عند عدم تحديد هذا الخيار، يكون المنفذ المبدئي هو syslog لـ udp و syslog-conn لاتصالات tcp.

-p، --priority الأولوية

يُدخل الرسالة في السجل مع أولوية المحددة. يمكن تحديد الأولوية رقمياً أو كزوج من facility.level. على سبيل المثال، -p local3.info يسجل الرسالة كرسالة معلوماتية في مرفق local3. المبدئي هو user.notice.

--prio-prefix

يبحث عن بادئة سجل نظام في كل سطر يُقرأ من الدخل القياسي. هذه البادئة عبارة عن رقم عشري داخل أقواس زاوية يرمز لكل من المرفق والمستوى. يُبنى الرقم بضرب المرفق في 8 ثم إضافة المستوى. على سبيل المثال، local0.info، التي تعني المرفق=16 والمستوى=6، تصبح <134>.

إذا لم تحتوي البادئة على مرفق، فسيُضبط المرفق آلياً إلى ما هو محدد في الخيار -p. وبالمثل، إذا لم تتوفر بادئة، فسيُسجل السطر باستخدام أولوية المعطاة مع -p.

لا يؤثر هذا الخيار على رسالة سطر الأوامر. صُمم هذا الخيار رئيسياً لحالات الاستخدام التي يُستخدم فيها logger في أنبوب (مثل: daemon | logger --prio-prefix) لقراءة رسائل متعددة بأولويات مختلفة.

--rfc3164

يستخدم ميفاق سجل نظام BSD‏ RFC 3164 https://tools.ietf.org/html/rfc3164 لإرسال الرسائل إلى حاسوب خادم بعيد.

--rfc5424[=without]

يستخدم ميفاق سجل النظام RFC 5424 https://tools.ietf.org/html/rfc5424 لإرسال الرسائل إلى حاسوب خادم بعيد. يمكن أن يكون معامل without الاختياري قائمة مفصولة بفواصل من القيم التالية: notq، notime، nohost.

تعمل قيمة notq على حجب البيانات المهيكلة لجودة الوقت من الرسالة المرسلة. تُظهر معلومات جودة الوقت ما إذا كانت الساعة المحلية متزامنة بالإضافة إلى أقصى عدد من الميكروثانية التي قد ينحرف عنها الطابع الزمني. تُحجب جودة الوقت آلياً أيضاً عند تحديد --sd-id timeQuality.

تعمل قيمة notime (التي تتضمن notq) على حجب الطابع الزمني الكامل للمرسل الذي يكون بتنسيق ISO-8601، بما في ذلك الميكروثانية والمنطقة الزمنية.

تعمل قيمة nohost على حجب معلومات gethostname(2) من ترويسة الرسالة.

أصبح ميفاق RFC 5424 هو المبدئي لأداة logger منذ الإصدار 2.26.

-s، --stderr

إخراج الرسالة إلى الخطأ القياسي بالإضافة إلى سجل النظام. تُخرج الرسالة الكاملة بنفس الصيغة المرسلة إلى syslog أو journald، بما في ذلك الأولوية وحقول أخرى محتملة. صُمم هذا الخيار رئيسياً لأغراض تنقيح الأخطاء وغالباً ما يُستخدم مع --no-act.

--sd-id اسم[@‎خانات]

يحدد معرف عنصر بيانات مهيكلة لترويسة رسالة RFC 5424. يجب استخدام الخيار قبل --sd-param لتقديم عنصر جديد. عدد عناصر البيانات المهيكلة غير محدود. المعرف (اسم بالإضافة إلى @خانات المحتملة) حساس لحالة الأحرف ويحدد نوع العنصر والغرض منه بشكل فريد. يجب ألا يوجد نفس المعرف أكثر من مرة في الرسالة الواحدة. جزء @خانات مطلوب للمعرفات غير القياسية التي يحددها المستخدم.

تولد أداة logger حالياً عنصر timeQuality القياسي فقط. تصف مواصفة RFC 5424 أيضاً العناصر origin (مع المعاملات ip و enterpriseId و software و swVersion) والعنصر meta (مع المعاملات sequenceId و sysUpTime و language). يمكن تحديد معرفات هذه العناصر دون لاحقة @خانات.

--sd-param اسم=‎قيمة

يحدد معامل عنصر بيانات مهيكل، وهو زوج من الاسم والقيمة. يجب استخدام الخيار بعد --sd-id ويمكن تحديده أكثر من مرة لنفس العنصر. لاحظ أن علامات الاقتباس حول قيمة مطلوبة ويجب الهروب منها في سطر الأوامر.
    logger --rfc5424 --sd-id zoo@123             \
                     --sd-param tiger="hungry"   \
                     --sd-param zebra="running"  \
                     --sd-id manager@123         \
                     --sd-param onMeeting="yes"  \
                     "this is message"

ينتج:

<13>1 2015-10-01T14:07:59.168662+02:00 ws kzak - - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="218616"][zoo@123 tiger="hungry" zebra="running"][manager@123 onMeeting="yes"] this is message

-S، --size حجم

يضبط الحجم الأقصى المسموح به للرسالة على حجم. الحجم المبدئي هو 1KiB محرف، وهو الحد المستخدم تقليديًا والمحدد في RFC 3164. مع RFC 5424، أصبح هذا الحد مرنًا. الافتراض الجيد هو أن مستقبلي RFC 5424 يمكنهم معالجة رسائل بحجم 4KiB على الأقل.

تقبل معظم أجهزة الاستقبال رسائل أكبر من 1KiB عبر أي نوع من ميفاقات syslog. وعلى هذا النحو، يؤثر خيار --size على logger في جميع الحالات (ليس فقط عند استخدام --rfc5424).

ملاحظة: حد حجم الرسالة يحدد الحجم الإجمالي للرسالة، بما في ذلك ترويسة syslog. تختلف أحجام الترويسة اعتمادًا على الخيارات المحددة وطول اسم المضيف. كقاعدة عامة، لا تزيد الترويسات عادةً عن 50 إلى 80 محرفًا. عند اختيار الحد الأقصى لحجم الرسالة، من المهم التأكد من أن المستقبل يدعم الحجم الأقصى أيضًا، وإلا فقد تُبتر الرسائل. ومرة أخرى، كقاعدة عامة، يجب أن يكون حجم الرسالة من 2 إلى 4 KiB مقبولًا بشكل عام، بينما يجب التحقق من عمل أي حجم أكبر من ذلك.

--socket-errors وضع

اطبع الأخطاء المتعلقة باتصالات مقابس Unix. يمكن أن يكون وضع هو on أو off أو auto. عندما يكون الوضع auto (المبدئي)، سيكتشف logger ما إذا كانت عملية البدء هي systemd(1)، وإذا كان الأمر كذلك، فسيُفترض أنه يمكن استخدام /dev/log مبكرًا عند الإقلاع. لن يتسبب فقدان /dev/log في أنظمة البدء الأخرى في حدوث أخطاء، تمامًا كما هو الحال عند استخدام استدعاء النظام openlog(3). كانت أداة logger(1) قبل الإصدار 2.26 تستخدم openlog(3)، وبالتالي كانت غير قادرة على اكتشاف فقدان الرسائل المرسلة إلى مقابس Unix.

عندما لا تُفعل الأخطاء، لن يتم الإبلاغ عن الرسائل المفقودة وستؤدي إلى حالة خروج ناجحة لأداة logger(1).

-T، --tcp

استخدم التدفق (TCP) فقط. تُحاول عملية الاتصال مبدئيًا عبر منفذ syslog-conn المحدد في /etc/services، وغالبًا ما يكون 601.

انظر أيضًا --server و --socket لتحديد مكان الاتصال.

-t، --tag وسم

ضع وسم وسم المحدد على كل سطر مراد تسجيله. الوسم المبدئي هو اسم المستخدم الذي ولج إلى الطرفية (أو اسم مستخدم بناءً على معرف المستخدم الفعلي).

-u، --socket مقبس

اكتب في المقبس المحدد بدلاً من مقبس سجل النظام.

--

أنهِ قائمة المعطيات. يسمح هذا لـ الرسالة أن تبدأ بشرطة (-).

-h، --help

اعرض نص المساعدة ثم اخرج.

-V، --version

اعرض الإصدار واخرج.

حالة الخروج

تخرج أداة logger بالقيمة 0 عند النجاح، وبقيمة أكبر من 0 عند حدوث خطأ.

المرافق والمستويات

أسماء المرافق الصالحة هي:

auth
authpriv لمعلومات الاستيثاق ذات الطبيعة الحساسة
cron

daemon
ftp
kern لا يمكن إنتاجها من عملية في مساحة المستخدم، وتُحوّل آلياً إلى user

lpr
mail
news
syslog
user
uucp
local0
إلى
local7
security مرادف مهجور لـ auth

أسماء المستويات الصالحة هي:

emerg
alert
crit
err
warning
notice
info
debug
panic مرادف مهجور لـ emerg
error مرادف مهجور لـ err
warn مرادف مهجور لـ warning

لمعرفة ترتيب الأولويات والأغراض المقصودة من هذه المرافق والمستويات، راجع syslog(3).

متوافق مع

يُتوقع أن يكون الأمر logger متوافقًا مع معيار IEEE Std 1003.2 ("POSIX.2").

أمثلة

logger رُسّخ النظام

logger -p local0.notice -t HOSTIDM -f /dev/idmc

logger -n loghost.example.com System rebooted

المؤلفين

كُتب الأمر logger في الأصل بواسطة جامعة كاليفورنيا في 1983-1993 وأعيدت كتابته لاحقًا بواسطة Karel Zak <kzak@redhat.com>، و Rainer Gerhards <rgerhards@adiscon.com>، و Sami Kerola <kerolasa@iki.fi>.

انظر أيضاً

journalctl(1)، syslog(3)، systemd.journal-fields(7)

التبليغ عن الأخطاء

لتقارير العِلل، استخدم مُتتبع المشكلات https://github.com/util-linux/util-linux/issues.

التوفر

الأمر logger جزء من حزمة util-linux التي يمكن تنزيلها من أرشيف نواة لينكس https://www.kernel.org/pub/linux/utils/util-linux/.

2026-05-18 util-linux 2.42.1