15

ほとんどの Unix プログラマーは、 によって定義されたインターフェースに慣れておりsyslog.h、多くの実装 (glibc など) には、送信される syslog メッセージのサイズに実際の制限はありませんが、通常、 をリッスンするアプリケーションには制限があります/dev/log

誰かがsyslogの最大メッセージサイズを見つける方法を知っているかどうか疑問に思っていますか? または、制限が実際に(または通常)何であるかについての適切なドキュメントはありますか?

編集:

これまでのところ、このトピックに関する RFC を見つけました。

4

3 に答える 3

10

syslog はプロトコルであることを覚えておいてください。つまり、最小値を設定し、推奨事項を作成します。これに関する情報源は見つかりませんが、サポートされるべき最小の長さは 1k であり、64k が推奨されていると思います。

各実装は自由に実行できます。つまり、最大 16MB が必要で syslog サーバーを作成している場合は、自由に実行できます。なぜそうするかはわかりませんが、できます。

私の知る限り、これprogramaticを確認する標準的な方法はありません。そのため、メッセージを 1k 未満に保つことが、移植性にとって理想的です。

アップデート

ユーザーMuMindrsyslogは、ログ タイプ/タイム スタンプを含む 2097 文字で切り捨てられたコメントで示されました。これはプロトコルの実装として広く使用されているため、移植性を最大限に高めるには、長さを 1k ~ 1.5k に抑える必要があります。

正直なところ、それを超える唯一の理由は、追加のデバッグ/クラッシュ出力をログに記録することです。代わりにそれをどこかに入れて、syslogと話すときにそうしたことを示す方がはるかに良いです/var/log確かに、そうできないシナリオがありますが、多くのライブラリにはそれに対処するために「ベストエフォート」ロギングが組み込まれています) .

于 2010-07-22T16:25:52.200 に答える
4

syslog は UDP を介して使用されるプロトコルであるため、この場合の制限は、UDP データグラム サイズからヘッダー用の数バイトを差し引いた約 65k です。/dev/log UNIX ドメイン ソケットは、データグラムまたはストリーム ソケット (SOCK_STREAM または SOCK_DGRAM) のいずれかにすることができます。メッセージを読むプログラムの作者。

于 2011-10-14T19:05:29.993 に答える