短い「公式」の答えは、残念ながらできないということです。
ただし、ほとんどの場合 (多くの 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 機能の一部を複製しているように見えるため、ほとんどの人はその贅沢を無料で楽しむことができます。;)