カスタムログファイルに出力するRsyslog


13

誰が私がここで間違ったことを教えてもらえますか?

これが究極の質問です。

ロガーコマンドを使用するときに、カスタムログファイルに出力できないのはなぜ/var/logですか?

私のスクリプトでは:

logger -i -t ANM -p local7.info "This is a local 7 test"

では、rsyslog.confファイルの最後に次を追加しました:

local7.* /var/log/anm.log

また、スクリプトには/var/log/anm.logファイルに対する権限があります

*更新*

そのため、ロギングサービスを再起動するのを忘れました。再起動してみましたが、service rsyslog restartまだ変更はありません。テスト用のテキストはに表示されません/var/log/anm.logが、それはで表示されません/var/log/syslog

*更新*

どのような権限が/var/log/"yourlogfilehere"必要ですか?OwnerGrouprwx

私はgrpと所有者をrootおよびloggerコマンドを実行するユーザー名に設定しようとしました。どちらにも変更はありません。

また、のカスタムディレクトリ内にログファイルを作成しようとしました/var/log。つまり/var/log/anm/anm.log、ディレクトリの両方のタイプの許可を設定します。

*更新*

rsyslogdが実行されています

syslog     598  0.0  0.1  31060  1292 ?        Sl   03:02   0:02 rsyslogd -c5

ここに私の/etc/rsyslog.confファイルからの出力があります

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#                       For more information see
#                       /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability

# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

local7.*        /var/log/anm.log

入れてみました/etc/rsyslog.d/50-default.conf(Ubuntu 12.04 LTSを実行しています)

#  Default rules for rsyslog.
#
#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
#daemon.*                       -/var/log/daemon.log
kern.*                          -/var/log/kern.log
#lpr.*                          -/var/log/lpr.log
mail.*                          -/var/log/mail.log
#user.*                         -/var/log/user.log
local7.*                        /var/log/anm.log

*更新*

さて、私はついにそれを理解しました。誰かがこれに答えてくれたらいいのにと思います。何が間違っていたのかを理解するのに数日かかりましたが、スーパーユーザーにはそれほど多くの人がいないと思います。

問題は、最初に理論付けたカスタムログファイルのファイルアクセス許可にありました。私は正しい権限を持っていると思っていましたが、所有者syslogとグループが必要であることがわかりましたadm。これをuser.logファイルと比較して決定しました。パーミッションが変更され、再度テストされると、すべてが完全に機能します!これが私が答えを見つけることができたよりも早く他の誰かに役立つことを願っています。


1
SFで同じ投稿を見ました-クロスポストしないでください。
ジャーニーマンオタク

誰もが私の投稿を移動するように私に言い続けました。他を削除する必要があると思いますか?
アトミクラン

1
うん。また、将来的には同様にそれを移動するためにモデレータに依頼する自分の投稿にフラグをすることができます
ジャーニーマンオタク

「すぐに助けが必要です」も、この質問のあまり役に立たないタイトルです。私も個人的にあなたの質問を読みにくいと感じています。実際の質問はどこですか?私が見ることができる唯一の本当の質問は、「/ var / log / somefileに必要な許可は何ですか?」です。それに対する答えは、「syslogdに処理させる」です。その上、それは多くの前の更新であったので、おそらくもはや関連がありません。
CVn

同じ問題に直面している他の人がそれを見ることができるように、答えとしてソリューションを投稿できます。
グローノスタジ

回答:


6

さて、私はついにそれを理解しました。誰かがこれに答えてくれたらいいのにと思います。何が間違っていたのかを理解するのに数日かかりましたが、スーパーユーザーにはそれほど多くの人がいないと思います。

問題は、最初に理論付けたカスタムログファイルのファイルアクセス許可にありました。権限は正しいと思いましたが、所有者は「syslog」でグループ「adm」である必要があることがわかりました。これは、user.logファイルと比較して決定しました。パーミッションが変更され、再度テストされると、すべてが完全に機能します!これが、答えを見つけることができたよりも早く他の誰かに役立つことを願っています。

最終的な権限は次のとおりです

-rw-r--r-- 1 syslog adm 0 Aug  3 05:09 anm.log

「権限が正しいと思った」とは、自分でファイルを作成したことを意味します。syslogデーモンに単純に作成させなかったのはなぜですか?
CVn

問題は、ロガーコマンドを使用したときに、/ var / logのカスタムログファイルに出力できないのはなぜですか?syslogにファイルを作成させようとしましたが、動作しません。どちらの方法でも大丈夫です。インストールスクリプトでファイルを作成し、アクセス許可を設定してもかまいません。
アトミクラン

1
秒= $$$
アトミクラン

こんにちは@Atomiklanご質問ありがとうございます。まったく同じ問題が解決します。しかし、rsyslogによって自動作成されたファイルが正しいsyslog / admではなくroot / rootの下にあるのはなぜだろうか?理由はありますか?
ユドンリー

ありがとう!どうやら、syslogのデバッグの2日間からあなたの努力が救われたようです:)そして@MichaelKjörlingと@YudongLiのあいまいなコメントから、デーモンは設定ルールのパスに従って独自にファイルを作成すると考えました。service restartルールを知った後、最初の適切な呼び出しで、logger正しい許可が設定されたファイルを作成します。
xealits

1

@Atomiklanは、カスタムファイルの所有者/グループをsyslog / admに変更する必要があると述べました。私はそれを試しましたが、うまくいきました...

しかし、@MichaelKjörlingからのコメントも正しかったようです。なぜsyslogデーモンにファイルを作成させないのですか?

私の場合の鍵(そして私はOPをお勧めします)は、syslogユーザーが私のカスタムログのディレクトリへの書き込み権限を持っていなかったことです。を実行し、chmod o+wrsyslogを再起動しました。ログファイルは、syslog / admをユーザー/グループとして、必要な場所に表示されました。


1
#$ModLoad imudp
#$UDPServerRun 514

でなければなりません:

$ModLoad imudp
$UDPServerRun 514

リモートロギングを実行するには!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.