短い「公式」の答えは、残念ながらできないということです。
ただし、ほとんどの場合 (多くの Linux ディストリビューションなど) 、このオプションをloggerサポートし、--no-actメッセージの書式設定を独自に実装する (以下を参照) 実装を使用できる幸運な場合があります。 a) 適切にフォーマットされたメッセージ、b) ファイルへの書き込み、c) システムログを汚染しないための、このようなコマンド:
logger --no-act -s "Oh dear..." 2>&1 | sed 's/^<[0-9]\+>//' >> /tmp/my.log
(@BasileStarynkevitch と @Kieveli に声をかけてください。両方とも以前にその一部について言及しましたが、全体の話ではありません。)
ノート:
1) 通常のログ ファイル形式に合わせるために、Debian ボックスの出力の先頭に追加された<PRIVAL>フィールド ( PRIVAL= FACILITY* 8 + )を「sed off」する必要がありました。PRIORITYあなたのマイレージは異なる場合があります。
2) POSIX 自体は、コマンドがそのオプション (のいずれか) をどのように正確に扱うべきかを定義していません。loggerたとえば、GNU ロガーはまったくサポート--no-actしていません。また、2 年前にこの回答の元のバージョンを投稿したとき、-s私のシステムでは印刷出力に書式設定を行わず、生のメッセージだけをエコーして、完全に役に立たなくしました。(当時は Systemd を使用していませんでした。ロガーのソース コードにさまざまな条件付きの Systemd 関連の呼び出しが見られるため、違いが説明できるかもしれませんが、これは漠然とした推測にすぎません。)
3) コマンドがこの些細な使用例に対して「歴史的に不親切」であった理由として最も可能性が高いloggerのは、それがシステム ロガーのかなり単純なフロントエンドであるということです。これは、基本的にそれにフィードするものはすべてsyslogd(またはsystemd-journaldなど) に直接送信され、さらにあらゆる種類のその他の処理とディスパッチ (さまざまなアウトレット: ファイル、ソケットなど、ローカルとリモートの両方)を行うことを意味します。 、およびアクセス許可レベルをブリッジします(したがって、たとえば、これらのファイルに直接書き込む権限がない場合でも、この例ではsyslogまたはにログインできます)。user.log
ファイルに直接適切にログを記録できるようにするにはlogger、システム ロガーの機能の一部とsyslog()std. ライブラリ関数、またはそれは簡単なエコーワンライナーよりもはるかに機能的ではありません(おそらく、上記のlogger呼び出しよりも複雑ではありません! ;) )。いずれにせよ、それは悪い考えのようです。
より良い解決策は、POSIX インターフェイス ( logger、syslog() ) にメッセージとともにアドホック アウトレット/ファシリティ パラメータ (ファイル名など) を指定する方法があり、システムを再構成せずにカスタム ファイルにログを記録できる場合です。 (とにかく、通常のユーザーには許可がありません)。
ただし、より良いものがないため、「正規の」Linuxlogger 実装は実際には syslog 機能の一部を複製しているように見えるため、ほとんどの人はその贅沢を無料で楽しむことができます。;)