web-dev-qa-db-ja.com

Hibernateロギングコンソール出力をオフにする

Hibernate 3を使用していますが、すべての起動メッセージがコンソールにダンプされないようにします。 log4j.propertiesのstdout行をコメントアウトしようとしましたが、うまくいきませんでした。以下にログファイルを貼り付けました。また、標準のプロジェクト構造でEclipseを使用しており、プロジェクトフォルダーのルートとbinフォルダーの両方にlog4j.propertiesのコピーがあります。

###ログメッセージをstdoutにダイレクトする### 
#log4j.appender.stdout = org.Apache.log4j.ConsoleAppender 
#log4j.appender.stdout.Target = System.out 
#log4j.appender.stdout.layout = org.Apache.log4j.PatternLayout 
#log4j.appender.stdout.layout.ConversionPattern =%d {ABSOLUTE}%5p%c {1}:%L- %m%n 
 
 ###ファイルhibernate.logにダイレクトメッセージ### 
 log4j.appender.file = org.Apache.log4j.FileAppender 
 log4j.appender.file.File = hibernate.log 
 log4j.appender.file.layout = org.Apache.log4j.PatternLayout 
 log4j.appender.file.layout.ConversionPattern =%d {ABSOLUTE }%5p%c {1}:%L-%m%n 
 
 ###ログレベルの設定-より詳細なログを記録するには、 'info'を 'debug'に変更します### 
 
 log4j.rootLogger = warn、stdout 
 
#log4j.logger.org.hibernate = info 
 log4j.logger.org.hibernate = debug 
 
 ### HQLクエリパーサーアクティビティのログ
#log4j.logger.org.hibernate.hql.ast.AST = debug 
 
 ## #SQL 
#log4j.loggerのみを記録.org.hibernate.SQL = debug 
 
 ###ログJDBCバインドパラメータ### 
 log4j.logger.org.hibernate.type = info 
# log4j.logger.org.hibernate.type = debug 
 
 ###ログスキーマのエクスポート/更新### 
 log4j.logger.org.hibernate.tool.hbm2ddl = debug 
 
 ###ログHQL解析ツリー
#log4j.logger.org.hibernate.hql = debug 
 
 ###ログキャッシュアクティビティ### 
#log4j.logger.org.hibernate.cache = debug 
 
 ###トランザクションアクティビティのログ
#log4j.logger.org.hibernate。 transaction = debug 
 
 ###ログJDBCリソース取得
#log4j.logger.org.hibernate.jdbc = debug 
 
 ### DriverManagerConnectionProvider ### 
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider = trac5を使用しているときに接続### 
 ###リークを追跡する場合は、次の行を有効にします。
74
Jared

より適切なログレベルを設定してください。ログレベルをinfoに設定すると、info以上のレベル(warnerrorおよびfatal)のログイベントのみがログに記録されます。つまり、debugロギングイベントは無視されます。

log4j.logger.org.hibernate=info

または XMLバージョン log4j構成ファイル:

<logger name="org.hibernate">
  <level value="info"/> 
</logger>

log4j manual も参照してください。

70
Juha Syrjälä

重要なお知らせ:プロパティ(hibernate構成の一部であり、ロギングフレームワークの構成の一部ではありません!)

hibernate.show_sql

ロギングを制御します直接ロギングフレームワークをバイパスしてSTDOUTに(メッセージの出力フォーマットが欠落していることで認識できます)。 log4jのようなロギングフレームワークを使用する場合、 alwaysプロパティをfalseに設定する必要があります まったく利益をもたらさないからです。

Hibernateに関するベンチマークを作成しようとするまで、そのような状況を気にすることはなかったので、その状況は私をかなり苛立たせました。

73
user1050755

実行中:

Java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.OFF);

休止状態の初期化が機能する前に。


注:上記の行はeveryログオフ(Level.OFF)になります。あまり厳しくしたくない場合は、使用することができます

Java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);

それは十分に静かです。 (または、Java.util.logging.Levelクラスでレベルを確認してください)。

29
acdcjunior

休止状態のこの小道具(hb構成)をfalseに設定すると、休止状態の多くの出力を無効にできます。

hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments

ただし、すべてのコンソール情報を無効にする場合は、ロガーレベルをJuhaが言うようにクラスorg.hibernateのFATALのNONEに設定する必要があります。

16
rresino

最後にわかったのは、Hibernateが現在slf4jログファサードを使用してlog4jにブリッジするためです。log4jおよびslf4j-log4j12 jarをlibに配置する必要があり、log4jプロパティがHibernateログを制御します。

私のpom.xml設定は次のようになります:

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.4</version>
    </dependency>
7
Liqun Chen

ログのHibernate:selectメッセージを無効にするために、プロパティをHibernateJpaVendorAdapterに設定できます。

<bean id="jpaVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="false"/>
</bean> 
4
Systfile

エレガントなソリューションを望んでいない人、それらのメッセージをすばやく簡単に止める方法は、私のために働いたソリューションです(私はHibernate 4.3.6とEclipseを使用し、上記の回答はありません(またはインターネットで見つかりました)動作しました; log4j構成ファイルも、ログレベルをプログラムで設定することもありません)

public static void main(String[] args) {
    //magical - do not touch
    @SuppressWarnings("unused")
    org.jboss.logging.Logger logger = org.jboss.logging.Logger.getLogger("org.hibernate");
    Java.util.logging.Logger.getLogger("org.hibernate").setLevel(Java.util.logging.Level.WARNING); //or whatever level you need

    ...
}

このサイト からダウンロードしたチュートリアルプログラムで使用しました

2

最初に行うことは、実際に使用されているロギングフレームワークを把握することです。

多くの他のフレームワークは、すでに他の著者によってカバーされています。 Logbackを使用している場合、このlogback.xmlをクラスパスに追加することで問題を解決できます。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <logger name="org.hibernate" level="WARN"/>
</configuration>

詳細: Logback Manual-Configuration

2

コンソールのロガー出力を取り除くには、これを試してください。

ch.qos.logback.classic.LoggerContext.LoggerContext loggerContext = (LoggerContext) org.slf4j.LoggerFactory.LoggerFactory.getILoggerFactory();

loggerContext.stop();

これらのステートメントは、ロガーからのすべてのコンソール出力を無効にしました。

1
Ramesh Gowtham

Slf4j-jdk14-xxx.jarをslf4j-log4j12-xxx.jarに置き換えます。両方がある場合は、slf4j-jdk14-xxx.jarを削除します。 https://forum.hibernate.org/viewtopic.php?f=1&t=99962 でこのソリューションを見つけました

1
Balakrishna

「デバッグ」を「情報」に変更し、機能しました。ここに私がやったことがあります:

前:

log4j.rootLogger=debug, stdout, R

後:

log4j.rootLogger=info, stdout, R 
0
user370677