লগ 4j এক্সএমএল কনফিগার ফাইল ব্যবহার করে হাইবারনেট লগিং কনফিগার করছেন?


89

লগ 4 জের জন্য এক্সএমএল স্টাইল কনফিগারেশন ফাইলটি ব্যবহার করে হাইবারনেটের লগিং কীভাবে কনফিগার করতে হয় সে সম্পর্কে আমি কোনও দলিল খুঁজে পাইনি।

এটি কি এমনকি সম্ভব বা হাইবারনেটের লগিং নিয়ন্ত্রণ করতে আমার কাছে কোনও বৈশিষ্ট্য শৈলী কনফিগারেশন ফাইল ব্যবহার করা উচিত?

কারও কাছে ডকুমেন্টেশনের কোনও তথ্য বা লিঙ্ক থাকলে এটি প্রশংসা করবে।

সম্পাদনা:
কেবল স্পষ্ট করে বলতে, আমি হাইবারনেট নিয়ন্ত্রণ করতে প্রকৃত এক্সএমএল সিনট্যাক্সের উদাহরণ খুঁজছি।

সম্পাদনা 2:
আমার এক্সএমএল কনফিগারেশন ফাইলটিতে যা আছে তা এখানে।

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="info"/>
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
        </layout>
    </appender>
    <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="Program-Name.log"/>
        <param name="MaxFileSize" value="1000KB"/>
    <!-- Keep one backup file -->
        <param name="MaxBackupIndex" value="4"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
        </layout>
    </appender>

    <root>
        <priority value ="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="rolling-file" />
    </root>
</log4j:configuration>

লগিং সূক্ষ্মভাবে কাজ করে তবে হাইবারনেট লগিংটি আমার অ্যাপ্লিকেশন স্তরের লগিং থেকে পৃথক হওয়া পদ্ধতিতে পদক্ষেপ নেওয়ার এবং নিয়ন্ত্রণ করার একটি উপায় অনুসন্ধান করছি it কারণ এটি বর্তমানে আমার লগগুলিকে বন্যা করছে। এটি করার জন্য আমি পছন্দ ফাইলটি ব্যবহার করার উদাহরণ পেয়েছি, আমি কেবল একটি এক্সএমএল ফাইলটিতে কীভাবে এটি করতে পারি তা ভাবছিলাম।


নেমো, ypu কি কখনও xML উপায়ে এটি করবেন তা খুঁজে পেয়েছেন? আপনি যদি করতে পারেন তবে আপনার প্রশ্নের উত্তর পোস্ট করতে পারে।
হোমস্টো

হোমাক্সটো, আমি করেছি। আমি একবার সুযোগ পেলে আপনার জন্য পোস্ট করব।
জেমস ম্যাকমাহন

<অ্যাপেন্ডার-রেফ রেফ = "কনসোল" /> হায়ার হাইবারনেট লগ ক্যাটালিনা.ও আউট, আপনি এই ট্যাগটি মন্তব্য করা উচিত যদি আপনি হাইবারনেট লগগুলিতে ক্যাটালিনা.আউট দেখতে না চান
এনরিক সান মার্টিন

উত্তর:


162

Http://docs.jboss.org/hibernate/core/3.3/references/en/html/session-configration.html#configration-logging থেকে

লগার বিভাগগুলির তালিকা এখানে:

Category                    Function

org.hibernate.SQL           Log all SQL DML statements as they are executed
org.hibernate.type          Log all JDBC parameters
org.hibernate.tool.hbm2ddl  Log all SQL DDL statements as they are executed
org.hibernate.pretty        Log the state of all entities (max 20 entities) associated with the session at flush time
org.hibernate.cache         Log all second-level cache activity
org.hibernate.transaction   Log transaction related activity
org.hibernate.jdbc          Log all JDBC resource acquisition
org.hibernate.hql.ast.AST   Log HQL and SQL ASTs during query parsing
org.hibernate.secure        Log all JAAS authorization requests
org.hibernate               Log everything (a lot of information, but very useful for troubleshooting) 

লগ 4j এক্সএমএল কনফিগারেশন ফাইলটিতে আটকানোর জন্য ফর্ম্যাট করা হয়েছে:

<!-- Log all SQL DML statements as they are executed -->
<Logger name="org.hibernate.SQL" level="debug" />
<!-- Log all JDBC parameters -->
<Logger name="org.hibernate.type" level="debug" />
<!-- Log all SQL DDL statements as they are executed -->
<Logger name="org.hibernate.tool.hbm2ddl" level="debug" />
<!-- Log the state of all entities (max 20 entities) associated with the session at flush time -->
<Logger name="org.hibernate.pretty" level="debug" />
<!-- Log all second-level cache activity -->
<Logger name="org.hibernate.cache" level="debug" />
<!-- Log transaction related activity -->
<Logger name="org.hibernate.transaction" level="debug" />
<!-- Log all JDBC resource acquisition -->
<Logger name="org.hibernate.jdbc" level="debug" />
<!-- Log HQL and SQL ASTs during query parsing -->
<Logger name="org.hibernate.hql.ast.AST" level="debug" />
<!-- Log all JAAS authorization requests -->
<Logger name="org.hibernate.secure" level="debug" />
<!-- Log everything (a lot of information, but very useful for troubleshooting) -->
<Logger name="org.hibernate" level="debug" />

এনবি: বেশিরভাগ লগার ডিইবিইউজি স্তর ব্যবহার করে, তবে org.hibernate.type ট্র্যাক ব্যবহার করে। হাইবারনেটের org.hibernate.type এর আগের সংস্করণগুলিতে DEBUG ব্যবহার করা হয়েছিল, তবে হাইবারনেট 3 হিসাবে জেডিবিসি প্যারামিটার বাইন্ডিং লগিং দেখতে আপনার অবশ্যই স্তরটি ট্র্যাক (বা সমস্ত) করতে হবে।

এবং একটি বিভাগ যেমন নির্দিষ্ট করা হয়:

<logger name="org.hibernate">
    <level value="ALL" />
    <appender-ref ref="FILE"/>
</logger>

এটি অবশ্যই মূল উপাদানটির আগে স্থাপন করা উচিত।


আমি নিশ্চিত না যে <appender-ref> সেখানে কী করছে, যখন আমি আমার কনফিগারেশনে এটি কোনও অ্যাপেন্ডারে পরিবর্তন করি, হাইবারনেট এখনও কনসোল এবং আমার ফাইল অ্যাপেন্ডারের জন্য লগইন করে seems অদ্ভুত।
জেমস ম্যাকমাহন

এটি অদ্ভুত, org.hibernate.type এর জন্য হাইবারনেট ৩.২..6 এ আপনি DEBUG স্তরটি ব্যবহার করতে পারেন এবং এটি সমস্ত পরামিতিগুলিতে লগ করে। হাইবারনেটে ৩..6..6 ডিবিগই যথেষ্ট নয়, আপনাকে ট্র্যাক লাগাতে হবে, যা আইএমএইচও ঠিক আছে (একবার আপনি এটি জানেন) যেহেতু এটি সত্যই অনেক লগ করে!
রিকার্ডো কোসু

ক্লাসের নাম হাইবারনেট ৪.২ এ রিফ্যাক্ট করা হয়েছিল যাতে লেনদেনের জন্য আপনাকে ব্যবহার করতে হয় org.hibernate.engine.transaction। দেখুন: docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/…
জেরিটান

আপনি নিম্নলিখিতগুলি যেমন স্ট্যান্ড্যালোন.এক্সএমএলগুলিতে লগারগুলি যুক্ত করতে পারেন: <লগার শ্রেণিবদ্ধ = "org.hibernate"> <স্তরের নাম = "DEBUG" /> </logger>
cw24

4
করা উচিত Lমধ্যে, উদাহরণস্বরূপ, <Logger name="org.hibernate.SQL" level="debug" />আসলে মূলধনী হবে? এল কে মূলধন করার সময় আমি টমক্যাটটিতে একটি ত্রুটি পেয়েছি "The content of element type 'log4j:configuration' must match '(renderer*,throwableRenderer*,appender*,plugin*,(category|logger)*,root?,(categoryFactory|loggerFactory)?)'."। এটি আমার লগ 4j.xML ফাইলটিতে কীভাবে আসলে ইনপুট হওয়া উচিত সে সম্পর্কে আমিও বিভ্রান্ত। আমার <logger>প্রতিটি বিভাগের জন্য পৃথক ব্লক থাকা উচিত, <level>ট্যাগগুলি দিয়ে সম্পূর্ণ করা , বা আপনি উপস্থাপিত ওয়ান-লাইনারগুলি নিয়ে কি আমি পালিয়ে যেতে পারি?
মেগা ম্যাট

25

লোকি এর উত্তর হাইবারনেট 3 ডক্সে পয়েন্ট এবং ভাল তথ্য প্রদান করে, কিন্তু আমি এখনও ফলাফল আমি আশা না পেয়ে ছিল।

প্রচুর ছোঁড়াছুড়ি, অস্ত্রের তরঙ্গ এবং সাধারণ মৃত মাউস রানগুলি অবশেষে আমার পনিরকে অবতরণ করেছে।

কারণ হাইবারনেট 3 ব্যবহার করছে জাভা এর জন্য সরল লগিং ছদ্মরূপ , (SLF4J) (ডক্স প্রতি) যদি আপনি Log4j 1.2 উপর নির্ভর করছে আপনি হবে এছাড়াও প্রয়োজন slf4j-log4j12-1.5.10.jar আপনি অনুপস্থিত হয় সম্পূর্ণরূপে সঙ্গে হাইবারনেট লগিং কনফিগার একটি log4j কনফিগারেশন ফাইল। আশা করি এটি পরের লোকটিকে সহায়তা করবে।


হ্যাঁ, আপনাকে অন্তর্নিহিত লগিং স্তরে ফেকডটি ওয়্যার করতে slf4j-log4j12-1.5.10.jar প্রয়োজন। আপনি লগিং স্তর হিসাবে log4j ব্যবহার করে থাকলে কনফিগারেশন ফাইলটি এখনও একটি লগ 4 জে কনফিগারেশন is
জেমস ম্যাকমাহন

7

হোমাক্সটোর মন্তব্যের জবাবে, এই মুহুর্তে আমার কাছে এটিই রয়েছে।

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="debug"/>
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
        </layout>
    </appender>
    <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="Program-Name.log"/>
        <param name="MaxFileSize" value="500KB"/>
        <param name="MaxBackupIndex" value="4"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
        </layout>
    </appender>

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

    <root>
        <priority value ="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="rolling-file" />
    </root>
</log4j:configuration>

মূল অংশ হচ্ছে

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

আশাকরি এটা সাহায্য করবে.


5

আমি যা ব্যবহার করি তা এখানে:

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

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

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

<root>
    <priority value="info"/>
    <appender-ref ref="C1"/>
</root> 

স্পষ্টতই, আমি হাইবারনেট বার্তাগুলি দেখতে পছন্দ করি না;) - আউটপুট পেতে স্তরটিকে "ডিবাগ" এ সেট করুন।


3

উত্তরগুলি দরকারী ছিল। পরিবর্তনের পরে, আমি এসকিউএল বিবৃতিগুলির সদৃশ লগিং পেয়েছি, একটি লগ 4 জ লগ ফাইলে এবং একটি স্ট্যান্ডার্ড কনসোলটিতে। আমি স্ট্যান্ডার্ড কনসোল থেকে লগইন থেকে মুক্তি পেতে show_sql কে মিথ্যা বলতে দৃ pers়তা.এক্সএমএল ফাইলটি পরিবর্তন করেছি। ফর্ম্যাট_এসকিএল রাখার ফলে লগ 4 জ লগ ফাইলকেও প্রভাবিত করে, তাই আমি এটি সত্য করে রেখেছি।

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
        version="2.0">
    <persistence-unit name="myUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:file:d:\temp\database\cap1000;shutdown=true"></property>
            <property name="dialect" value="org.hibernate.dialect.HSQLDialect"/>
            <property name="hibernate.show_sql" value="false"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.connection.username" value="sa"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        </properties>
    </persistence-unit>
</persistence>

0

আপনি আপনার log4jফাইলটি এই জাতীয় বিভাগের ট্যাগের সাথে কনফিগার করতে পারেন (উদাহরণস্বরূপ কনসোল অ্যাপেন্ডার সহ):

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yy-MM-dd HH:mm:ss} %p %c - %m%n" />
    </layout>
</appender>
<category name="org.hibernate">
    <priority value="WARN" />
</category>
<root>
    <priority value="INFO" />
    <appender-ref ref="console" />
</root>

সুতরাং হাইবারনেট থেকে প্রাপ্ত প্রতিটি সতর্কতা, ত্রুটি বা মারাত্মক বার্তা প্রদর্শিত হবে, এর চেয়ে বেশি কিছু নয়। এছাড়াও, আপনার কোড এবং লাইব্রেরি কোড তথ্য স্তরে হবে (সুতরাং তথ্য, সতর্কতা, ত্রুটি এবং মারাত্মক)

একটি লাইব্রেরির লগ স্তর পরিবর্তন করতে, কেবল একটি বিভাগ যুক্ত করুন, উদাহরণস্বরূপ, ক্ষতিকারক স্প্রিং ইন তথ্য লগ:

<category name="org.springframework">
    <priority value="WARN" />
</category>

বা অন্য সংযোজন সহ, অ্যাডিটিভিটিটি ভাঙ্গুন (অ্যাডিটিভিটিটির ডিফল্ট মানটি সত্য)

<category name="org.springframework" additivity="false">
    <priority value="WARN" />
    <appender-ref ref="anotherAppender" />
</category>

এবং যদি আপনি যে হাইবারনেট যে প্রশ্নের সাথে লগ ইন করুন না চান, হাইবারনেট সম্পত্তি সেট show_sqlকরতে false

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.