5.6. ロギング


Seam の前は最も単純なログメッセージでさえ冗長なコードが必要でした。
private static final Log log = LogFactory.getLog(CreateOrderAction.class);
 
public Order createOrder(User user, Product product, int quantity) { 
  if ( log.isDebugEnabled() ) { 
    log.debug("Creating new order for user: " + user.username() + 
              " product: " + product.name() + " quantity: " + quantity);
  } 
  return new Order(user, product, quantity); 
}
Copy to Clipboard Toggle word wrap
Seam はこうしたコードを大幅に簡素化するロギング API を提供します。
@Logger private Log log; 

public Order createOrder(User user, Product product, int quantity) { 
  log.debug("Creating new order for user: #0 product: #1 quantity: #2", 
             user.username(), product.name(), quantity); 
          
  return new Order(user, product, quantity); 
}
Copy to Clipboard Toggle word wrap
log 変数を静的に宣言したかどうかに関係なく、 エンティティ Bean コンポーネント (log 変数が静的でなければならない) 以外ならいずれでも動作します。
文字列連結は debug() メソッド内部で起こるため、 冗長な if ( log.isDebugEnabled() ) による保護は不要です。 Seam は log のインジェクト先を認識できるため、 通常はログカテゴリを明示的に指定する必要もありません。
UserProduct が現在のコンテキストで有効な Seam コンポーネントならコードはさらに簡潔になります。
@Logger private Log log; 
public Order createOrder(User user, Product product, int quantity) { 
  log.debug("Creating new order for user: #{user.username} 
             product: #{product.name} quantity: #0", quantity); 
  return new Order(user, product, quantity); 
}
Copy to Clipboard Toggle word wrap
Seam ロギングは出力の送信先を log4j または JDK ロギングのどちらにするのかを自動的に選択します。 log4j がクラスパスにある場合はこれが使用されます。そうでない場合は Seam は JDK ロギングを使用します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat