GNU/Linux >> Belajar Linux >  >> Linux

Cegah Syslogs Dari Dilog Di Bawah Journalctl?

Saya memiliki cuplikan Python sederhana yang dikelola oleh systemd layanan yang masuk ke rsysogd daemon tempat saya telah mendefinisikan file konfigurasi untuk meletakkannya ke server syslog dengan format yang telah saya tetapkan. Ini berfungsi dengan baik sejauh ini.

Dalam kode di bawah ini, saya meneruskan argumen sebagai string yang ingin saya masuki di server. Saya menggunakan kode di bawah ini sebagai modul dan menggunakannya untuk logging saja, skrip sebenarnya menggunakan ini untuk tujuan logging.

#!/usr/bin/env python

import syslog
import sys

syslog.openlog(facility=syslog.LOG_LOCAL0)
syslog.syslog(syslog.LOG_INFO, sys.argv[1])

Karena aplikasi dikelola oleh systemd itu membuat salinan syslog tersedia jika dilihat dari journalctl -xe dan journalctl -u <my-service> yang tidak saya inginkan terjadi karena saya memiliki informasi penting lainnya yang saya log in di log jurnal.

Definisi layanan adalah

[Unit]
Description=Computes device foobar availability status

[Service]
Type=simple

EnvironmentFile=/etc/sysconfig/db_EndPoint
ExecStart=/usr/bin/python /opt/foobar/foobar.py
WatchdogSec=60
RestartSec=10
Restart=always
LimitNOFILE=4096

[Install]
WantedBy=default.target

dan di /etc/systemd/journald.conf file, saya belum mengaktifkan apa pun dari pilihan yang akan tersedia. Saya mencari dokumentasi journald.conf ini untuk menggunakan ForwardToSyslog=no dan melakukan restart journald layanan sebagai

systemctl restart systemd-journald

dan juga memulai ulang unit layanan saya, tetapi saya melihat log keluar ke server syslog dan juga ke jurnal log. Opsi apa yang saya lewatkan di sini?

Jawaban yang Diterima:

Saya memiliki cuplikan Python sederhana yang dikelola oleh layanan systemd yang masuk ke daemon rsys[l]ogd […]

Tidak.

Apa yang Anda miliki adalah layanan yang masuk ke jurnal systemd. Server mendengarkan /dev/log yang terkenal socket tempat program Python Anda berbicara bukan rsyslogd . Ini adalah systemd-journald . rsyslogd melekat pada sisi lain dari systemd-journald , dan program Python Anda tidak berbicara dengannya.

Dari sini, harus jelas bahwa satu-satunya cara untuk tidak mengirim barang melalui systemd-journald adalah menggunakan beberapa lainnya rute ke rsyslogd , tidak soket terkenal yang digunakan perpustakaan Python Anda secara default. Itu semua tergantung dari bagaimana Anda mengonfigurasi rsyslogd .

  • Ada kemungkinan Anda telah mengaktifkan server UDP dengan imudp modul, dalam hal ini Anda dapat memberi tahu program Python Anda untuk menggunakannya dengan menggunakan pustaka Python berbeda yang berbicara ke server UDP semacam itu. (Perpustakaan syslog Python dirancang untuk menggunakan soket lokal yang terkenal.)
  • Atau (dan lebih baik lagi, karena Anda harus berhati-hati agar tidak membuka layanan UDP ke dunia luar dengan mesin Anda), Anda dapat memberikan rsyslogd sedetik, tidak diketahui, AF_LOCAL socket untuk didengarkan dengan mengonfigurasi ini di imuxsock konfigurasi modul. Sekali lagi, Anda harus memberi tahu program Python Anda untuk menggunakannya dan menggunakan pustaka Python yang berbeda.
Terkait:Bagaimana mencegah Safari menanyakan saya di setiap situs jika saya ingin mengizinkan plugin?

Apa sebenarnya yang Anda lakukan dalam program Python Anda berada di luar cakupan jawaban ini.

Bacaan lebih lanjut

  • https://unix.stackexchange.com/a/294206/5132

Linux
  1. Journalctl:Bagaimana Mencegah Teks Terpotong Di Terminal?

  2. Cegah Tmux Memulai Di Ssh?

  3. Bagaimana Cara Memperbarui Python Dari 3.4.3 Menjadi 3.5??

  1. mengekstraksi teks dari file MS word dengan python

  2. Cara mencegah proses latar belakang dihentikan setelah menutup klien SSH di Linux

  3. Mengimpor modul Python dari Bash

  1. Perlu Mencegah Paket Agar Tidak Diinstal?

  2. Copot pemasangan python yang dibuat dari sumber?

  3. Bagaimana mencegah proses dari menulis file