背景如何編寫寫入/ var/log/myapp目錄的C/C++應用程序?
在Linux系統中,Application Logs存在的/var/log
,這是由root/root
完全擁有並且有我的系統權限755子目錄。例如,我看到/var/log/mysql
和/var/log/samba
。
問題
如果我想要一個MYAPP能夠寫入到/var/log/myapp
,什麼是規範的方式在C/C實現這一點的 ++?
思考
我必須做一些瘋狂喜歡setuid root
如果我不想sudo a_setup_script.sh
?請注意,我知道syslog
例程,但它們不足以滿足我的需要(我需要記錄更多的信息,將它們分成不同的文件,因此需要子目錄)。
我需要查看一下Ubuntu打包(設置目錄)和直接將文件IO組合到子目錄(由myapp)?
我想盡可能遵循標準。
附錄
我忘了提,MYAPP實際上是一個守護進程(即聽取客戶的服務器),所以它不會那麼糟糕有myapp_user其實際運行/開始這個過程。
ANSWER
對於Ubuntu的,最好的解決辦法似乎是rsyslog
,一個強大的,現代化的替代syslog
。它將根據需要生成文件/目錄,它具有用於靈活路由syslog
條目的內置語言,並且它在C/C++級別使用簡單的舊的syslog
API。要存儲路由信息,您可以在C/C++中定義自己的文本消息編碼,並配合正確的rsyslog.conf
來處理解碼。
你確定你可以在子目錄中使用它嗎?仔細閱讀我的操作系統 - 如果我把所有的東西都轉儲到'/ var/log/syslog'中,那麼它會使這個文件變得沒用(有太多東西)。 – kfmfe04
@ kfmfe04是的。請檢查更新。您需要配置syslog以將_your_消息發送至_your_文件。例如:'news.crit /var/log/news/news.crit news.err/var/log/news/news.err' – user2116939
@ kfmfe04對於多次編輯抱歉。評論有點痛苦。 :( – user2116939