স্প্রিং বুট টেস্ট লগিং.লেভেলকে উপেক্ষা করে


91

পরীক্ষা চালানোর সময় আমার এক মভেন মডিউল আমার লগিং স্তরগুলিকে উপেক্ষা করে।

ইন src/test/resourcesআমার আছে application.properties:

app.name=bbsng-import-backend
app.description=Import Backend Module for Application
spring.profiles.active=test

# LOGGING
logging.level.root=error
logging.level.org.springframework.core =fatal
logging.level.org.springframework.beans=fatal
logging.level.org.springframework.context=fatal
logging.level.org.springframework.transaction=error
logging.level.org.springframework.test=error
logging.level.org.springframework.web=error
logging.level.org.hibernate=ERROR

আমিও চেষ্টা করেছি application-test.properties

আমার অ্যাপ্লিকেশনটি প্রচুর লগ করে, বিশেষত প্রসঙ্গ লোড করার সময়। আমি চেষ্টা logback.xml, logback-test.xmlএবং logback-spring.xmlকিন্তু কিছুই করতে সাহায্য করে।

আমার পোম:

<parent>
    <groupId>at.company.bbsng</groupId>
    <artifactId>bbsng-import</artifactId>
    <version>0.1.0-SNAPSHOT</version>
</parent>

<artifactId>bbsng-import-backend</artifactId>
<name>bbsng-import-backend</name>

<properties>
    <start-class>at.company.bbsng.dataimport.ApplicationImportBackend</start-class>
</properties>


<dependencies>

    <!-- APPLICATION ... -->
    <dependency>
        <groupId>at.company.bbsng</groupId>
        <artifactId>bbsng-app-domain</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- SPRING ... -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-batch</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- JAVAX ... -->
       ...

    <!-- COMMONS ... -->
       ...

    <!-- LOMBOK ... -->
       ...

    <!-- DB -->
       ...

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${org.springframework.boot-version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

একটি সাধারণ টেস্ট ক্লাস:

@ContextConfiguration(classes = { ApplicationImportBackend.class })
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {

    @Autowired
    private JobLauncher jobLauncher;

    @Test
    public void testSimpleProperties() throws Exception {
        assertNotNull(jobLauncher);
    }

}

অ্যাপ্লিকেশন লগগুলি DEBUG মোডে রয়েছে।

এবং হ্যাঁ, application.propertiesলোড করা হবে। আমি ইতিমধ্যে ভুল কনফিগারেশনের মাধ্যমে অ্যাপ্লিকেশনটি ভাঙ্গার চেষ্টা করেছি।

কোন ইঙ্গিত জন্য আপনাকে ধন্যবাদ।

উত্তর:


90

ঠিক আছে আমি এখন যা করেছি, সমস্ত মডিউলগুলিতে আমি নীচে কনফিগার করেছি:

src / প্রধান / সম্পদ:
আমি লগিং কনফিগারেশন ব্যবহার application.properiesমত logging.level.*প্রশ্ন বর্ণনা অনুযায়ী।

এসসিআর / পরীক্ষা / সংস্থানসমূহ:
আমি এর logback-test.xmlমতো ব্যবহার করি :

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <logger name="*.myapp" level="error" />
    <logger name="org.springframework.core " level="error" />
    <logger name="org.springframework.beans" level="error" />
    <logger name="org.springframework.context" level="error" />
    <logger name="org.springframework.transaction" level="error" />
    <logger name="org.springframework.web" level="error" />
    <logger name="org.springframework.test" level="error" />
    <logger name="org.hibernate" level="error" />
</configuration>

তবে আমি এখনও বুঝতে পারি না, কেন কয়েকটি মডিউলগুলিতে আমি অ্যাপ্লিকেশন p প্রপার্টি ব্যবহার করতে পারি, তবে অন্য একটি মডিউলে এটি উপেক্ষা করে ... তবে আপাতত এটি আমার পক্ষে যেমন রয়েছে তেমন কাজ করে।

তবে ব্যাকগ্রাউন্ড জ্ঞান সহ কয়েকটি সংকেত এখনও স্বাগত।

আমি আমার উত্তরটিকে সমাধান হিসাবে চিহ্নিত করি না, কারণ এটি এখনও একটি কর্মজীবনের মতো মনে হচ্ছে।


7
আমার ধারণাটি application.propertiesপরীক্ষার সূচনার চেয়ে পরে পার্স করা হচ্ছে। যে কারণে org.springframework.testপ্রাথমিক পরীক্ষার লগিংয়ের কোনও প্রভাব নেই।
এল্নুর আবদুররাখিমভ

একই সমস্যা, লগব্যাক-টেস্ট.এক্সএমএলও ব্যবহার করছে
রেডিসটো

4
এটা সত্যিই দারুন. আমি যোগ করেছি <logger name="org.springframework.boot" level="warn" />এবং <logger name="org.eclipse.jetty" level="warn" />সত্যিই গোলমালটি কমাতে। আপনি যদি সোয়াগার ব্যবহার করেন তবে আপনি যোগ করতে পারেন <logger name="springfox" level="warn" />। সাবাশ. একটি অনুগ্রহ আছে!
বোহেমিয়ান

4
এটি সাহায্য করেছে, যদিও আমি logback-test.xmlফাইল যুক্ত করার চেষ্টা করার পরে নিজেই লগব্যাক থেকে একগুচ্ছ লগগুলি দেখতে শুরু করেছি । এগুলি বন্ধ করতে আমি এই স্ট্যাকওভারফ্লো পোস্ট - এবং বিএএম থেকে মূল উত্তরটি অনুসরণ করেছি, পরীক্ষা চালানোর সময় আমি সমস্ত পূর্ববর্তী লগিং থেকে মুক্তি পেতে সক্ষম হয়েছি।
ড্যানি বুলিস

4
একই সমস্যা. ঠিক একই কনফিগারেশন (বেস ক্লাস) সহ 2 মডুলস। প্রসঙ্গ তৈরির সময় একজনের লগিং থাকে, অন্যটি হয় না। অ্যাপ্লিকেশন.পোপার্টি (লগিং.লেভেল) এর পরিবর্তনগুলি কার্যকর হয়। logback-test.xmlপ্রত্যাশিত হিসাবে উপরের কাজ ব্যবহার । (+1) ধন্যবাদ
টর্স্টেন

27
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <logger name="org.springframework" level="INFO"/>
</configuration>

দ্রুত স্থির হিসাবে, আমি logback.xmlউপরের সামগ্রীটি দিয়ে ফাইলটি রেখেছি src/test/resourcesএবং এটি কাজ করে।


4
সুন্দর, পরিষ্কার সমাধান। ফাইলটির নাম "লগব্যাক-টেস্ট.এক্সএমএল" রাখা যেতে পারে এবং স্বচ্ছতার জন্য 'এসসিআর / টেস্ট / রিসোর্স' এর অধীনে রাখা উচিত।
ক্রিজিসটোফ টমাসজেউস্কি

হ্যাঁ, স্বচ্ছতার কারণেই আমি এটির নামকরণ করেছিlogback-text.xml
মাইকেল হেগনার

আমার উত্তরের পার্থক্য কি?
মাইকেল হেগনার

22

পরীক্ষার শ্রেণিতে application.propertiesএকটি টিকা যোগ করার প্রয়োজন সক্ষম করতে @SpringBootTest, এখানে আরও পড়ুন ।


4
@ স্প্রিংবুটটেষ্টটি ইন্টিগ্রেশন পরীক্ষার জন্য এবং তাই অ্যাপ্লিকেশন.প্রপ্রেটিগুলি লোড করা হবে। তবে ইউনিট পরীক্ষার জন্য এটি সঠিক উত্তর নয়।
টবশ

11

আমি এর সমাধানও খুঁজছি, ইতিমধ্যে আমি নিম্নলিখিত সমাধানটি ব্যবহার করছি:

এটি সেরা নয় তবে এটি কাজ করে

@BeforeClass
public static void setErrorLogging() {
   LoggingSystem.get(ClassLoader.getSystemClassLoader()).setLogLevel(Logger.ROOT_LOGGER_NAME, LogLevel.ERROR);
}

LoggingSystem: লগিং সিস্টেমের উপর একটি সাধারণ বিমূর্তি।

->

get: লগিং সিস্টেমটি ব্যবহারে সনাক্ত করুন এবং ফিরে দিন। লগব্যাক এবং জাভা লগিং সমর্থন করে

setLogLevel: প্রদত্ত লগারের জন্য লগিং স্তর নির্ধারণ করে।

অন্যান্য সমস্ত পরীক্ষার ক্লাসের জন্য ফিরে লগ স্তর পরিবর্তন করার বিষয়টি নিশ্চিত করুন।

আশা করি এটি আপনাকে সাহায্য করবে, শুভকামনা


4
লগিং থামার জন্য এটিই কেবল একমাত্র উপায়। আপনাকে ধন্যবাদ
রবহরব

লগ কনফিগারেশন ফাইলগুলির একগুচ্ছ না রেখে আপনি কী পরীক্ষা করতে হবে তা পরীক্ষা করার জন্য এটি কোডের একটি সাধারণ বিট।
জেনসন

7

আপনার পরীক্ষাগুলি যদি এ্যানোটেট করা হয় তবে @DataJpaTestআপনি হাইবারনেট এসকিউএল লগিং বন্ধ করে স্যুইচ করতে পারেন:

@DataJpaTest(showSql=false)
public class MyTest {
  ..
}

ধন্যবাদ এটি এখন পর্যন্ত সেরা উত্তর। অসংখ্য ধন্যবাদ.
ডিগল

2

এটা চেষ্টা কর:

@ContextConfiguration(classes = ApplicationImportBackend.class, 
    initializers = ConfigFileApplicationContextInitializer.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
    //...
}

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