2013-05-28 14 views
7

ArkaplanBir/var/log/myapp dizinine yazan bir C/C++ uygulaması nasıl yazılır? Linux sistemlerinde

, Application Logsroot/root aittir ve benim sistem üzerinde 755 izinlerine sahip olduğu /var/log, alt dizinleri vardır. Örneğin, /var/log/mysql ve /var/log/samba'u görüyorum. Ben myapp bir /var/log/myapp içine yazabilmek istiyorsanız

Soru

, kurallı yolu C/C Bunun üstesinden gelmenin nedir ++?

Düşünceler

ben sudo a_setup_script.sh istemiyorum eğer setuid root gibi çılgınca bir şey yapmak zorunda mıyım? syslog rutinlerinden haberdar olduğumu unutmayın, ancak ihtiyaçlarım için yetersizler (farklı dosyalara ayrılmış, dolayısıyla alt dizine gereksinim duyduğum daha fazla bilgi kaydetmem gerekiyor).

Ubuntu paketleme (dizini kurmak için) ve IO dosyasını alt dizine (myapp ile) bir araya getirmem gerekiyor mu?

Ben mümkün olduğunca standartları takip etmek istiyorum.

Ek I myapp (müşterilerine dinleyen bir sunucu) aslında bir cin süreçleri yani aslında çalışan bir myapp_user olması çok kötü olmazdı, söylemeyi unutmuşum

/süreci başlatır.

Ubuntu için

YANIT en iyi çözüm rsyslog, syslog için güçlü, modern bir yedek olarak görünmektedir. Gerekirse dosya/dizin oluşturacak, syslog girişlerinin esnek yönlendirilmesi için yerleşik bir dili vardır ve basit, eski syslog API'sini C/C++ seviyesinde kullanır. Yönlendirme bilgisini saklamak için, kod çözmeyi işlemek için uygun bir rsyslog.conf ile birlikte C/C++ içindeki metin mesajının kendi kodlamasını belirleyebilirsiniz.

cevap

8

Hayır, hayır hayır hayır. Böyle şeyler için surat yok. Bu günlükler "syslog" ve bu kaydedici mesaj göndermek için bir API var denilen bir işlem tarafından yönetilmektedir:

void openlog(const char *ident, int option, int facility); 
    void syslog(int priority, const char *format, ...); 
    void closelog(void); 

Yoksa komut satırında 'adam syslog' yazıp tüm bilgileri alabilirsiniz: -) Güncelle: ayrı bir günlük dosyasına ileti göndermek için syslog yapılandırma dosyasını düzenlemek için izinlere ihtiyacınız olacaktır, aksi takdirde varsayılan konumda (muhtemelen/var/log/syslog) sonuçlanırlar.

+0

Bunu alt dizinlerle kullanabileceğine emin misin? OP'imi dikkatli bir şekilde okuyun - eğer bütün eşyalarımı/var/log/syslog' içine dökersem, bu dosyayı işe yaramaz hale getirirdi (çok fazla şey var). – kfmfe04

+0

@ kfmfe04 Evet. Lütfen güncellemeyi kontrol edin._your_ dosyalarını _your_ dosyasına göndermek için syslog'u yapılandırmanız gerekecektir. Örneğin: 'news.crit /var/log/news/news.crit news.err/var/log/news/news.err' – user2116939

+0

@ kfmfe04 Birden çok düzenleme için üzgünüm. Yorumlar biraz acı veriyor. :( – user2116939

İlgili konular