2013-05-28 5 views
7

背景/var/log/myappディレクトリに書き込むC/C++アプリケーションの記述方法? Linuxシステムで

は、Application Logsroot/rootが所有しており、私のシステムでは755を持っている/var/log、のサブディレクトリに存在します。たとえば、/var/log/mysql/var/log/sambaと表示されます。

質問

私はmyappに/var/log/myappに書き込むことができるようにしたい場合は、C/C++でこれを達成するための標準的な方法は何ですか?

思考

は私はsudo a_setup_script.shにしたくない場合はsetuid rootのようなクレイジーな何かをする必要がありますか?私はsyslogルーチンを認識していますが、私のニーズには不十分です(別のファイルに分かれているので、サブディレクトリが必要です)。

Ubuntuのパッケージング(ディレクトリを設定する)とファイルIOをサブディレクトリに直接書き込む必要がありますか(myapp)?

可能な限り規格に従いたいと思います。私が言及するのを忘れてしまった

補遺

は、myappのは、実際にはデーモンのプロセス(クライアントにリッスンサーバー)であるので、実際に/を実行しますmyapp_userを持っているので、悪いことではないでしょうプロセスを開始します。 Ubuntuのために

答えは、最善の解決策は、syslogための強力な、現代の交換rsyslogように見えます。必要に応じてファイル/ディレクトリを生成し、syslogエントリの柔軟なルーティングのための組み込み言語を持ち、C/C++レベルで単純な古いsyslog APIを使用します。ルーティング情報を保存するには、C/C++でテキストメッセージの独自のエンコードを定義し、適切なrsyslog.confと組み合わせてデコードを処理できます。

答えて

8

いいえ、いいえいいえ。そのようなもののためのsuid。これらのログは、「syslogの」として知られているプロセスによって管理されており、このロガーにメッセージを送信するためのAPIがあります:

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

それとも、コマンドラインで「男のsyslog」と入力し、すべての情報を取得することができます - )

アップデート:syslogの設定ファイルを編集して別のログファイルに送信する権限が必要です。そうしないと、デフォルトの場所(おそらく/ var/log/syslog)になります。

+0

これをサブディレクトリでも使用できますか?慎重に私のOPを読んでください。もし私のすべてのものを '/ var/log/syslog'にダンプすると、そのファイルは役に立たなくなります。 – kfmfe04

+0

@ kfmfe04はい。アップデートを確認してください。_your_メッセージを_your_ファイルに送信するようにsyslogを設定する必要があります。例: 'news.crit /var/log/news/news.crit news.err/var/log/news/news.err' – user2116939

+0

@ kfmfe04複数の編集をおかけして申し訳ありません。コメントは少し痛いです。 : – user2116939

関連する問題