cron job'larınıza tarih damgalı log eklemek istiyorsanız, komutun sonuna şunu ekleyin;

| while read -r l; do echo "$(date) $l"; done >> /var/log/cron.log

benden bir örnek;

@reboot rsync -av --exclude-from='/home/ronnie/exclude.txt' /mnt/d/ /mnt/w | while read -r l; do echo "$(date) $l"; done >> /var/log/cron.log

BeğenFavori PaylaşYorum yap
  • Türker Sezer @dirigeant

    "logger" komutuyla ciktiyi dogrudan rsyslog'a gonderebilirsiniz. Bu sayede rsyslog'un tum nimetlerinden de faydalanabilirsiniz.
    Orneginizdeki sekilde loglari ayri bir dosyaya almak icin bir rsyslog yapilandirma dosyasi olusturup, tanimladiginiz etikete gore (ornekte "rsync" olarak tanimli) kural yazmaniz yeterli olacaktir.

    rsync -av --exclude-from='/home/ronnie/exclude.txt' /mnt/d/ /mnt/w | logger -i -t rsync

    • Ronnie James Dio @ronniejamesdio

      rsyslog yapılandırma dosyasına nasıl ekliyoruz? rsyslog sunucu değil mi? yani aktif ettiğinde başka sunucuların log'larını rsyslog çalışan cihaza yollayabiliyorsun diye biliyorum.

    • Türker Sezer @dirigeant

      @ronniejamesdio evet, rsyslog bir servis ve loglari uzak sunuculara gondermek, uzak sunuculardan almak ozelliklerinden biri. Fakat yerelde loglari tutmak icin de kullaniliyor. /var/log altinda gordugunuz syslog (ya da messages), kern.log, auth.log vb. loglar rsyslog uzerinden kaydediliyor.

      Rsyslog'un cok esnek bir yapisi oldugundan yapilandirma dosyasinda filtreleme ve yonlendirmenin farkli yollari var. En basit sekilde asagidaki gibi bir tanimlama isinizi gorecektir.

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

      ":programname" parametresi logger komutuyla tanimladiginiz etikete denk dusuyor. Yani tanimli etikette "rsync" varsa kayitlar rsync.log dosyasina gidiyor.

      Bu satiri rsyslog.conf dosyasinin sonuna ya da /etc/rsyslog.d/ dizininde olusturacaginiz .conf uzantili bir dosyanin icine yazabilirsiniz. Sonrasinda loglarin yazilacagi dosyayi olusturmaniz (rsyslog dosyayi kendisi olusturmuyor) ve rsyslog servisini yeniden baslatmaniz yeterli olacaktir.

      Filtreleme icin kullanabileceginiz diger property'lere asagidaki baglantidan bakabilirsiniz. Ornegin ":msg" parametresi ile mesaj icerigine ulasabilir ve ona gore bir yonlendirme yapabilirsiniz.

      https://www.rsyslog.com/doc/configuration/properties.html#message-properties

      Birden fazla parametreye gore yonlendirme yapmak da mumkun. Ornegin etiketi "rsync" olan ve mesaj iceriginde "ERROR" olan satirlar farkli bir dosyaya gitsin vb. tanimlamalari yapabilirsiniz. Hata kayitlarini ayirmak sorunlari farketmeyi ve incelemeyi kolaylastirabilir. Asagidaki baglantida filtrelerin detaylarini ve cesitli ornekleri bulabilirsiniz.

      https://www.rsyslog.com/doc/configuration/filters.html

    • Ronnie James Dio @ronniejamesdio

      @dirigeant ayrıntılı açıklama için teşekkürler bunu deneyeceğim.

    • Ronnie James Dio @ronniejamesdio

      @dirigeant /etc/rsyslog.d/ dizininde rsync.conf dosyası oluşturup içine :programname, contains, "rsync" /var/log/rsync.log satırını ekleyip kaydettim. /var/log içinde rsync.log dosyasını da oluşturdum, hatta crontab hangi kullanıcı üzerinden açılmışsa log dosyalarına o kullanıcı için yetki de verdim, rsyslog'u restart'ta ettim, buna rağmen log'ları dosya içine kaydetmiyor.

      sonra /etc/rsyslog.conf dosyasının içine de ekledim, o da olmadı. yine kaydetmiyor log'ları.

    • Ronnie James Dio @ronniejamesdio

      @dirigeant hallettim, syslog içinden cron kayıtlarına baktığımda log dosyalarını açamadığını gördüm. log dosyası için syslog kullanıcısına yetki vermek lazımmış. güzel oldu bu şekilde. yeni bir şey daha öğrenmiş oldum sayende.