[解決済み] Scalaのロギング
質問
Scalaアプリケーションでロギングを行う良い方法は何でしょうか?言語哲学と一致し、コードを乱雑にせず、メンテナンスが少なく、邪魔にならないようなもの。以下は基本的な要求リストです。
- シンプル
- はコードを散らかさない。Scalaはその簡潔さが素晴らしいのです。コードの半分をロギング文にしたくはありません
- ログ形式を変更することで、他のエンタープライズログやモニタリングソフトウェアに適合させることができます。
- ロギングのレベル(デバッグ、トレース、エラーなど)に対応しています。
- ディスクおよびその他の宛先(ソケット、コンソールなど)にログを記録できます。
- 最小構成(ある場合
- コンテナで動作する (例: ウェブサーバ)
- (オプションですが、あると便利です) 言語に含まれているか、Mavenのアーティファクトとして提供されているので、これを使うためにビルドをハックする必要はないです。
既存のJavaロギングソリューションが使えることは知っていますが、上記のうち少なくとも2つ、つまり散らかり具合と構成で失敗しています。
ご返信ありがとうございました。
どのように解決するのですか?
slf4j ラッパー
Scalaのロギングライブラリのほとんどは、Javaのロギングフレームワーク(slf4j、log4jなど)の何らかのラッパーでしたが、2015年3月現在、生き残っているログライブラリはすべてslf4jとなっています。これらのログライブラリは、ある種の
log
オブジェクトを呼び出すことができます。
info(...)
,
debug(...)
など。私はslf4jの大ファンではありませんが、今ではロギングフレームワークとして主流になっているようです。以下は、その説明です。
SLF4J
:
Simple Logging Facade for Java または (SLF4J) は、様々なロギングフレームワーク、例えば java.util.logging, log4j と logback のためのシンプルなファサードまたは抽象化として機能し、エンドユーザーがデプロイ時に希望のロギングフレームワークをプラグインできるようにするものである。
デプロイ時に基礎となるログライブラリを変更できることは、slf4jファミリーのロガー全体にユニークな特徴をもたらしますが、これは意識する必要があります。
- 設定としてのクラスパス のアプローチになります。slf4jがあなたが使っている基礎的なロギングライブラリを知る方法は、ある名前でクラスをロードすることです。私は、クラスローダーがカスタマイズされたとき、slf4jが私のロガーを認識しない問題を経験しました。
- なぜなら シンプルファサード は共通項であろうとするため、実際のログ呼び出しにのみ限定される。つまり、コード経由での設定はできない。
大きなプロジェクトでは、もしみんながslf4jを使うなら、推移的依存関係のロギング動作をコントロールできることは、実際に便利かもしれません。
Scalaのロギング
Scalaのロギング は、Heiko Seeberger が彼の slf4s . マクロを使って呼び出しを if 式に展開することで、高価なログコールを回避することができます。
<ブロッククオートScala Loggingは便利で高性能なロギングライブラリで、SLF4Jやその他のロギングライブラリをラッピングすることができます。
歴史的ロガー
関連
-
[解決済み] GlassFishサーバーのログの場所
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] 異なるログレベルを使用する場合
-
[解決済み] logrotateのチェックを1回だけ手動で実行することは可能ですか?
-
[解決済み] React Nativeでロギングを行う方法
-
[解決済み] Scalaでファイル全体を読む?
-
[解決済み】Scalaのリスト連結、::と++の比較
-
[解決済み] 画面(プログラム)の出力をファイルに保存する
-
[解決済み] dockerコンテナのログを1つのファイルにリダイレクトするには?
-
[解決済み】なぜjava.util.loggingを使用しないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] GlassFishサーバーのログの場所
-
[解決済み] dmesgのタイムスタンプをカスタムの日付フォーマットに変換するにはどうしたらいいですか?
-
[解決済み] MSIログファイルの作成
-
[解決済み] 異なるログレベルを使用する場合
-
[解決済み】Spring Boot。application.propertiesでロギングレベルを設定するにはどうすればよいですか?
-
[解決済み】cronジョブのログを取るには?
-
[解決済み】Kubernetesレプリケーションコントローラのすべてのポッドからログを取得するにはどうすればよいですか?
-
[解決済み] Scalaのロギング
-
[解決済み] 画面(プログラム)の出力をファイルに保存する
-
[解決済み] dockerコンテナのログを1つのファイルにリダイレクトするには?