আমি মনে করি সমস্যাটি সমাধানের আরও একটি মার্জিত উপায় আছে: একটি সনাক্তকারী দিয়ে সিসলগে stdout / stderr প্রেরণ করুন এবং আপনার সিসলগ ম্যানেজারকে প্রোগ্রামের নামে এটির আউটপুট বিভক্ত করার জন্য নির্দেশ দিন।
আপনার সিস্টেমড সার্ভিস ইউনিট ফাইলে নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করুন:
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<your program identifier> # without any quote
তারপরে, ধরে নিই যে আপনার বিতরণটি সিসলোগগুলি পরিচালনা করতে rsyslog ব্যবহার করছে, নিম্নলিখিত লিখিত /etc/rsyslog.d/<new_file>.conf
সামগ্রী সহ একটি ফাইল তৈরি করুন :
if $programname == '<your program identifier>' then /path/to/log/file.log
& stop
এখন লগ ফাইলটি syslog দ্বারা লিখনযোগ্য করুন:
# ls -alth /var/log/syslog
-rw-r----- 1 syslog adm 439K Mar 5 19:35 /var/log/syslog
# chown syslog:adm /path/to/log/file.log
আরএসআস্লগ পুনরায় আরম্ভ করুন ( sudo systemctl restart rsyslog
) এবং উপভোগ করুন! আপনার প্রোগ্রাম stdout / stderr জার্নালটিএল ( sudo journalctl -u <your program identifier>
) এর মাধ্যমে এখনও উপলব্ধ থাকবে তবে সেগুলি আপনার পছন্দের ফাইলটিতেও পাওয়া যাবে।
সংরক্ষণাগার.অর্গের মাধ্যমে উত্স
journalctl -u
এখনও কাজ করে তবে নির্দিষ্ট ফাইলে কিছুই পাঠানো হয় না।