হাইবারনেট লগিং কনসোল আউটপুট বন্ধ করা হচ্ছে


85

আমি হাইবারনেট 3 ব্যবহার করছি এবং কনসোলে সমস্ত প্রারম্ভিক বার্তা ডাম্প করা থেকে এটি বন্ধ করতে চাই। আমি log4j.properties এ স্টেডআউট লাইনগুলি মন্তব্য করার চেষ্টা করেছি তবে কোনও ভাগ্য নেই। আমি আমার লগ ফাইলটি নীচে আটকালাম। এছাড়াও আমি প্রমিত প্রকল্প কাঠামো সহ গ্রহনটি ব্যবহার করছি এবং প্রকল্প ফোল্ডার এবং বিন ফোল্ডার উভয়টিতে লগ 4j.properties এর একটি অনুলিপি পেয়েছি।

### স্টডআউটে সরাসরি লগ বার্তা
# 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 S AbsOLUTE}% 5p% c {1}:% L -% m% n

হাইবারনেট.লগ ফাইল করার জন্য ### সরাসরি বার্তা
log4j.appender.file = org.apache.log4j.FileAppender
log4j.appender.file.File = হাইবারনেট.লগ
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern =% d S AbsOLUTE}% 5p% c {1}:% L -% m% n

### লগের স্তর নির্ধারণ করুন - আরও ভার্বোজ লগিংয়ের জন্য 'তথ্য' থেকে 'ডিবাগ' পরিবর্তন করুন ###

log4j.rootLogger = সতর্কতা, stdout

# log4j.logger.org.hibernate = তথ্য
log4j.logger.org.hibernate = ডিবাগ

### লগ এইচকিউএল কোয়েরি পার্সার ক্রিয়াকলাপ
# log4j.logger.org.hibernate.hql.ast.AST = ডিবাগ

### শুধু এসকিউএল লগইন করুন
# log4j.logger.org.hibernate.SQL = ডিবাগ

### জেডিবিসি বাইন্ড প্যারামিটারগুলি লগ করুন ###
log4j.logger.org.hibernate.type = তথ্য
# log4j.logger.org.hibernate.type = ডিবাগ

### লগ স্কিমা রফতানি / আপডেট ###
log4j.logger.org.hibernate.tool.hbm2ddl = ডিবাগ

### লগ এইচকিউএল পার্স গাছ
# log4j.logger.org.hibernate.hql = ডিবাগ

### লগ ক্যাশে কার্যকলাপ ###
# log4j.logger.org.hibernate.cache = ডিবাগ

### লগ লেনদেনের ক্রিয়াকলাপ
# log4j.logger.org.hibernate.transaction = ডিবাগ

### লগ জেডিবিসি রিসোর্স অধিগ্রহণ
# log4j.logger.org.hibernate.jdbc = ডিবাগ

### আপনি যদি সংযোগটি ট্র্যাক করতে চান তবে নীচের লাইনটি সক্ষম করুন ###
ড্রাইভারম্যানেজার সংযোগপ্রভাইডার ব্যবহার করার সময় ### ফাঁস
# log4j.logger.org.hibernate.connection.DriverManagerConnicationProvider = trac5

4
উল্লেখযোগ্য যে হাইবারনেট 4+ জেবিএসএস লগিং ব্যবহার করে।
চোখ

উত্তর:


78

আরও যুক্তিসঙ্গত লগিং স্তর সেট করার চেষ্টা করুন। থেকে লগিং স্তর সেটিং infoমানে যে শুধুমাত্র এ ইভেন্ট লগ infoবা উচ্চতর স্তর ( warn, errorএবং fatal,) লগ ইন করা হয় যে debugঘটনা লগিং উপেক্ষা করা হয়।

log4j.logger.org.hibernate=info

অথবা লগ 4j কনফিগার ফাইলের এক্সএমএল সংস্করণে :

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

লগ 4j ম্যানুয়ালটিও দেখুন


4
এক্সএমএল সংস্করণে আপনি এটি কীভাবে করেন?
জেমস ম্যাকমাহন

আপনি উপরের কাজগুলি করে org.hibernate এর সমস্ত প্যাকেজগুলিতে এটি প্রয়োগ করতে পারেন, বা আপনি হাইবারনেটের মধ্যে বিভিন্ন প্যাকেজের জন্য বিভিন্ন স্তর চান, আপনি সেই প্যাকেজগুলি একইভাবে নির্দিষ্ট করতে পারেন।
ম্যাথু ব্রুবেকার

4
এটি যৌক্তিক বলে মনে হচ্ছে, তবে এটি এখনও আমার পক্ষে কাজ করে না (স্প্রিং 3.0.5.5, হাইবারনেট 3.5.5, এসএফ 4 জে-লগ 4 জ ব্রিজ)। হাইবারনেট স্টার্টআপে প্রতিবার আমি প্রায় 100 লাইন 'INFO' মন্তব্য পেয়েছি। সুতরাং এটি সবার জন্য কাজ নাও করতে পারে।
জোসেফ লাস্ট

4
@ ট্যুইস্টেড পিয়ার: আপনার লগিং স্তরটি ওয়ারে সেট করুন। তারপরে আপনি INFO বার্তা পাবেন না।
জুহা সিরিজালি

4
ফলোআপ যেহেতু এটি কখনই পর্যাপ্তভাবে সমাধান করা হয়নি: হাইবারনেট, এমনকি এখনও ৪.৩.০. ফিনালে, প্রচুর হার্ডকোডযুক্ত System.out.println()কল রয়েছে।
ক্রাইলিস-সতর্কতাবাদী-

86

গুরুত্বপূর্ণ বিজ্ঞপ্তি: সম্পত্তি (হাইবারনেট কনফিগারেশনের অংশ, লগিং ফ্রেমওয়ার্ক কনফিগারেশনের অংশ নয়!)

hibernate.show_sql

যেকোন লগিং ফ্রেমওয়ার্ক (যা আপনি বার্তাগুলির অনুপস্থিত আউটপুট ফর্ম্যাটিংয়ের মাধ্যমে চিনতে পারবেন) বাইপাস করে সরাসরি STDOUT এ লগিং নিয়ন্ত্রণ করে । আপনি যদি লগ 4 জের মতো লগিং ফ্রেমওয়ার্ক ব্যবহার করেন তবে আপনার সেই সম্পত্তিটি সর্বদা মিথ্যাতে সেট করা উচিত কারণ এটি আপনাকে কোনও লাভ দেয় না।

এই পরিস্থিতিতেটি আমাকে দীর্ঘদিন বিরক্ত করেছিল কারণ আমি হাইবারনেট সম্পর্কিত কিছু মানদণ্ড লেখার চেষ্টা না করা পর্যন্ত আমি কখনই সত্যই এটির যত্ন নিই না।


4
hibernate.xmlআমার লগিং কনফিগারেশনের বিপরীতে আমাকে এই সম্পত্তিটি আমার হাইবারনেট (অর্থাত্ ) কনফিগারেশনে সেট করতে হয়েছিল । পয়েন্টারের জন্য ধন্যবাদ!
জেজে জব্বার

এই লগিংটি আমার লগিং কাঠামোটি বাইপাস না করে বাস্তবে ব্যবহার করার জন্য কী উপায় আছে? আমি স্ট্যান্ডআউটে প্রেরিত কিছু ব্যতিক্রম দেখছি যা আমি লগ করতে চাই।
লেগনা

4
আমার স্প্রিং বুট প্রকল্পের সাথে আমি এটি একটি প্রোফাইল ওয়াইএমএল কনফ ফাইলটিতে যুক্ত করেছি। তবে এটি কার্যকর হয়নি, ঠিক এই থ্রেডে অন্যদের পোস্টের মতো ... হাইবারনেট লগগুলি আমি যা নির্দিষ্ট করে তা নির্ধারণ করেই লিখতে থাকি। এটি কি লগব্যাক কনফিগারেশন, অ্যাপ্লিকেশন ইয়ামল ফাইল এবং pom.xML ছাড়া অন্য কোথাও পরিচালনা করা যায়?
অ্যালেক্স

34

কার্যকর করা হচ্ছে:

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

হাইবারনেটের সূচনাটি আমার পক্ষে কাজ করার আগে।


দ্রষ্টব্য: উপরের লাইনটি প্রতিটি লগিং বন্ধ করে দেবে ( Level.OFF)। আপনি যদি কম কঠোর হতে চান তবে আপনি ব্যবহার করতে পারেন

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

যে যথেষ্ট নীরব। (বা java.util.logging.Levelআরও স্তরের জন্য ক্লাস পরীক্ষা করুন )।


4
এটি আমার পক্ষে কাজ করেছে: java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);
রাফিআলহাম্ট

16

হাইবারনেট (এইচবি কনফিগারেশন) এর প্রপসটি সেট করে হাইবারনেটের আউটপুটগুলির অনেকগুলি আপনি অক্ষম করতে পারেন:

hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments

তবে আপনি যদি সমস্ত কনসোল তথ্য অক্ষম করতে চান তবে আপনাকে অবশ্যই লগার স্তরটি org.hibernateজুহের মতো ক্লাসের কোনও নফল হিসাবে নির্ধারণ করতে হবে ।


আমি যদি পরিসংখ্যান তৈরি করতে চাই, তবে লগ না করি?
মার্কথেগ্রিয়া

7

অবশেষে আমি বুঝতে পেরেছি, কারণ হাইবারনেট এখন slf4j লগ ফেইড ব্যবহার করছে, লগ 4j তে ব্রিজ করার জন্য, আপনাকে লগ 4j এবং slf4j-log4j12 জারগুলি আপনার লিবে লাগাতে হবে এবং তারপরে লগ 4j বৈশিষ্ট্যগুলি হাইবারনেট লগগুলিকে নিয়ন্ত্রণ করবে।

আমার 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>

প্রকৃতপক্ষে আপনি -Dorg.jboss.logging.provider=slf4jআপনার ভিএম বিকল্পগুলিতে স্পষ্টভাবে হাইবারনেট ব্যবহার করতে পারেন slf4j ব্যবহার করতে । : আমি বিষয়ে একটি নিবন্ধ লিখেছিলেন medium.com/@scadge/how-to-enable-hibernate-logging-dc11545efd3d
Scadge

5

Hibernate:selectলগ ইন বার্তা নিষ্ক্রিয় করার জন্য, সম্পত্তি এতে সেট করা সম্ভব HibernateJpaVendorAdapter:

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

4

যারা মার্জিত সমাধানগুলি চান না, কেবলমাত্র সেই বার্তাগুলি বন্ধ করার দ্রুত এবং নোংরা উপায়, এখানে আমার জন্য কাজ করা একটি সমাধান রয়েছে (আমি হাইবারনেট ৪.৩. E এবং গ্রহনটি ব্যবহার করি এবং উপরে কোনও উত্তর সরবরাহ করা হয়নি (বা ইন্টারনেটে পাওয়া গেছে) কাজ করেছে; না 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

    ...
}

আমি এটি এই সাইট থেকে ডাউনলোড টিউটোরিয়াল প্রোগ্রামে ব্যবহার করেছি


4

প্রথম কাজটি হ'ল লগিং ফ্রেমওয়ার্কটি আসলে ব্যবহৃত হয় তা নির্ধারণ করা figure

অনেক ফ্রেমওয়ার্ক ইতিমধ্যে উপরের অন্যান্য লেখক দ্বারা কভার করা হয়েছে। আপনি লগব্যাক ব্যবহার করছেন আপনি যদি এই ক্লাসপথে এই লগব্যাক.এক্সএমএল যোগ করে সমস্যার সমাধান করতে পারেন :

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

আরও তথ্য: লগব্যাক ম্যানুয়াল-কনফিগারেশন


1

আমি "ডিবাগ" কে "তথ্য" এ পরিবর্তন করেছি এবং এটি কার্যকর হয়েছে। আমি যা করেছি তা এখানে:

আগে:

log4j.rootLogger=debug, stdout, R

পরে:

log4j.rootLogger=info, stdout, R 

0

Slf4j-jdk14-xxx.jar টি slf4j-log4j12-xxx.jar এর সাথে প্রতিস্থাপন করুন। আপনার যদি উভয়ই থাকে তবে slf4j-jdk14-xxx.jar মুছুন। Https://forum.hibernate.org/viewtopic.php?f=1&t=999623 এ এই সমাধানটি পেয়েছেন


দুর্দান্ত, এই কাজ করে। আমি log4j.propertiesকনফিগারেশন ব্যবহার করতে পারে ; log4j.logger.org.hibernate=OFF
সেবাস্তিয়ান

0

কনসোলে লগার আউটপুট থেকে মুক্তি পেতে চেষ্টা করুন।

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

loggerContext.stop();

এই বিবৃতিগুলি লগার থেকে সমস্ত কনসোল আউটপুট অক্ষম করে।


0

হাইবারনেট লগিংয়ের বেশ কয়েকটি অংশ রয়েছে যা আপনি হাইবারনেট প্যাকেজের লগার শ্রেণিবিন্যাসের উপর ভিত্তি করে নিয়ন্ত্রণ করতে পারেন (লগারের শ্রেণিবিন্যাসের আরও এখানে )।

    <!-- Log everything in hibernate -->
    <Logger name="org.hibernate" level="info" additivity="false">
      <AppenderRef ref="Console" />
    </Logger>

    <!-- Log SQL statements -->
    <Logger name="org.hibernate.SQL" level="debug" additivity="false">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Logger>

    <!-- Log JDBC bind parameters -->
    <Logger name="org.hibernate.type.descriptor.sql" level="trace" additivity="false">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Logger>

উপরে থেকে নিয়ে যাওয়া হয় এখানে

show-sql:trueলগিং ফ্রেমওয়ার্ক সেটিংসকে ছাড়িয়ে যাওয়ার পরে আপনার কনফিগারেশন ফাইলে আপনার সম্পত্তি থাকতে পারে ed আরো বিষয়ে এখানে


0

আমি এই 2 টি লাইন যুক্ত করে থামাতে সক্ষম হয়েছি

log4j.logger.org.hibernate.orm.deprecation=error

log4j.logger.org.hibernate=error

বেলো হ'ল আমার লগ 4j.properties দেখতে দেখতে, আমি লগের স্তরটি ব্যাখ্যা করে কিছু মন্তব্য করা লাইন রেখেছি

# Root logger option
#Level/rules TRACE < DEBUG < INFO < WARN < ERROR < FATAL.
#FATAL: shows messages at a FATAL level only
#ERROR: Shows messages classified as ERROR and FATAL
#WARNING: Shows messages classified as WARNING, ERROR, and FATAL
#INFO: Shows messages classified as INFO, WARNING, ERROR, and FATAL
#DEBUG: Shows messages classified as DEBUG, INFO, WARNING, ERROR, and FATAL
#TRACE : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL
#ALL : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL
#OFF : No log messages display


log4j.rootLogger=INFO, file, console

log4j.logger.main=DEBUG
log4j.logger.org.hibernate.orm.deprecation=error
log4j.logger.org.hibernate=error

#######################################
# Direct log messages to a log file
log4j.appender.file.Threshold=ALL
log4j.appender.file.file=logs/MyProgram.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{1} - %m%n

# set file size limit
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=50


#############################################
# Direct log messages to System Out
log4j.appender.console.Threshold=INFO
log4j.appender.console.Target=System.out
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1} - %m%n
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.