প্রশ্ন Rsyslogd এ একই সময়ে প্রোগ্রাম নাম এবং লগ স্তর দ্বারা ফিল্টার লগ বার্তা


আমি প্রোগ্রাম থেকে লগ বার্তা সংরক্ষণ করতে চান foobar লগ স্তর সঙ্গে err ফাইল মধ্যে /var/log/foobar.log rsyslogd মধ্যে। আমি এটা কিভাবে করবো?

প্রোগ্রাম নাম অনুসারে আমি বার্তাগুলি ফিল্টার করতে পারি:

:programname,contains,"foobar" /var/log/foobar.log

আমি লগ লেভেল দ্বারা বার্তাগুলি ফিল্টার করতে পারি:

*.err /var/log/foobar.log

কিন্তু আমি একই সময়ে উভয় এই ফিল্টার দ্বারা ফিল্টার কিভাবে বুঝতে পারছি না।


5
2018-02-02 12:23


উত্স




উত্তর:


Rsyslogd উইকি এই উদাহরণ আপনি চান কিছু করতে একটি উপায় প্রস্তাব করে। এটা অভিব্যক্তি ভিত্তিক সিনট্যাক্স ব্যবহার করে প্রোগ্রাম নাম দ্বারা ফিল্টারিং অংশ।

উইকি উপর দেওয়া উদাহরণ ব্যবহার করে:

if $programname == 'foobar' and $syslogseverity-text == 'error' then /var/log/foobar.log 

Rsyslogd.conf অথবা rsyslog.d এর ভিতরে একটি স্নিপেট হিসাবে রাখুন


5
2018-02-02 13:22



আপনার উত্তর একটি সারসংক্ষেপ যোগ করুন। - Dennis Williamson
ধন্যবাদ! $ Programname এবং $ syslogseverity-text মত সমস্ত ভেরিয়েবলের তালিকা কোথায় পাওয়া যাবে? - Marko Kevac
আমি এই তালিকায় এটি পাওয়া যায়: rsyslog.com/doc/property_replacer.html - coredump


এটি করার একটি সহজ উপায় ... যদি ($ প্রোগ্রামটিতে "foobar" থাকে) এবং ($ তীব্রতা রয়েছে "ভুল") তাহলে /var/log/foobar.log

অবশ্যই অন্যান্য অনেক উপায় আছে, তবে আমি মনে করি উপরের উপরে খুব সোজা।


2
2018-02-02 13:38