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を使用しているときに接続### ###リークを追跡する場合は、次の行を有効にします。
より適切なログレベルを設定してください。ログレベルをinfo
に設定すると、info
以上のレベル(warn
、error
およびfatal
)のログイベントのみがログに記録されます。つまり、debug
ロギングイベントは無視されます。
log4j.logger.org.hibernate=info
または XMLバージョン log4j構成ファイル:
<logger name="org.hibernate">
<level value="info"/>
</logger>
log4j manual も参照してください。
重要なお知らせ:プロパティ(hibernate構成の一部であり、ロギングフレームワークの構成の一部ではありません!)
hibernate.show_sql
ロギングを制御します直接ロギングフレームワークをバイパスしてSTDOUTに(メッセージの出力フォーマットが欠落していることで認識できます)。 log4jのようなロギングフレームワークを使用する場合、 alwaysプロパティをfalseに設定する必要があります まったく利益をもたらさないからです。
Hibernateに関するベンチマークを作成しようとするまで、そのような状況を気にすることはなかったので、その状況は私をかなり苛立たせました。
実行中:
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
クラスでレベルを確認してください)。
休止状態のこの小道具(hb構成)をfalseに設定すると、休止状態の多くの出力を無効にできます。
hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments
ただし、すべてのコンソール情報を無効にする場合は、ロガーレベルをJuhaが言うようにクラスorg.hibernate
のFATALのNONEに設定する必要があります。
最後にわかったのは、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>
ログのHibernate:select
メッセージを無効にするために、プロパティをHibernateJpaVendorAdapter
に設定できます。
<bean id="jpaVendorAdapter"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false"/>
</bean>
エレガントなソリューションを望んでいない人、それらのメッセージをすばやく簡単に止める方法は、私のために働いたソリューションです(私は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
...
}
このサイト からダウンロードしたチュートリアルプログラムで使用しました
最初に行うことは、実際に使用されているロギングフレームワークを把握することです。
多くの他のフレームワークは、すでに他の著者によってカバーされています。 Logbackを使用している場合、このlogback.xmlをクラスパスに追加することで問題を解決できます。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<logger name="org.hibernate" level="WARN"/>
</configuration>
コンソールのロガー出力を取り除くには、これを試してください。
ch.qos.logback.classic.LoggerContext.LoggerContext loggerContext = (LoggerContext) org.slf4j.LoggerFactory.LoggerFactory.getILoggerFactory();
loggerContext.stop();
これらのステートメントは、ロガーからのすべてのコンソール出力を無効にしました。
Slf4j-jdk14-xxx.jarをslf4j-log4j12-xxx.jarに置き換えます。両方がある場合は、slf4j-jdk14-xxx.jarを削除します。 https://forum.hibernate.org/viewtopic.php?f=1&t=99962 でこのソリューションを見つけました
「デバッグ」を「情報」に変更し、機能しました。ここに私がやったことがあります:
前:
log4j.rootLogger=debug, stdout, R
後:
log4j.rootLogger=info, stdout, R