স্প্রিং বুট: আমি অ্যাপ্লিকেশন.প্রেটিস দিয়ে লগিং স্তরটি কীভাবে সেট করতে পারি?


300

এটি খুব সাধারণ প্রশ্ন, তবে আমি তথ্য খুঁজে পাচ্ছি না।
(জাভা ফ্রেমওয়ার্ক সম্পর্কে আমার জ্ঞানের মারাত্মক অভাব রয়েছে)

আমি কীভাবে অ্যাপ্লিকেশন.প্রেটিসগুলির সাথে লগিং স্তরটি সেট করতে পারি?
এবং ফাইল অবস্থান লগিং, ইত্যাদি?


1
রেকর্ডের জন্য, আরেকটি বিকল্প হ'ল পরিবেশের পরিবর্তনশীল হিসাবে লগ স্তরকে সেট করা, উদাহরণস্বরূপ হিরকু ড্যাশবোর্ডের মাধ্যমে। ইন Settings-> পছন্দসই স্তরে Config Varsসেট করুন logging.level.com.yourpackage(INFO, ERROR, DEBUG)।
লুকসোলার

উত্তর:


354

আপডেট করুন: স্প্রিং বুট v1.2.0.RELEASE থেকে শুরু করে সেটিংস application.propertiesবা application.ymlআবেদন করে। রেফারেন্স গাইডের লগ স্তরের বিভাগটি দেখুন ।

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

স্প্রিং বুটের আগের সংস্করণগুলির জন্য আপনি পারবেন না। তার জন্য আপনাকে কেবল আপনার লগিং ফ্রেমওয়ার্কের জন্য (লগ 4 জে, লগব্যাক) সাধারণ কনফিগারেশন ব্যবহার করতে হবে। ডিরেক্টরিতে উপযুক্ত কনফিগার ফাইল ( log4j.xmlবা logback.xml) যুক্ত করুন src/main/resourcesএবং আপনার পছন্দ অনুযায়ী কনফিগার করুন।

--debugকমান্ড-লাইন থেকে অ্যাপ্লিকেশন শুরু করার সময় নির্দিষ্ট করে আপনি ডিবাগ লগিং সক্ষম করতে পারেন ।

স্প্রিং বুট লগব্যাকের জন্য কিছু ডিফল্ট, রঙিন ইত্যাদি বেস.এক্সএমএল ফাইল যা আপনার লগব্যাক.এক্সএমএল ফাইলের মধ্যে অন্তর্ভুক্ত করতে পারে তা কনফিগার করার জন্য একটি সূচনা পয়েন্টও সরবরাহ করে । (এটি স্প্রিং বুটে ডিফল্ট লগব্যাক.এক্সএমএল থেকেও প্রস্তাবিত) ।

<include resource="org/springframework/boot/logging/logback/base.xml"/>     

8
কমান্ড লাইনে আপনি যা করতে পারেন তা সাধারণত কোনও বাহ্যিক কনফিগারেশন ফাইলে কাজ করে। সুতরাং ডিবাগ = সত্য এটি আমার মনে হয়। এই পতাকাটি খানিকটা বিশেষ কারণ লগিংটি খুব তাড়াতাড়ি শুরু করতে হবে তবে আমি মনে করি এটি কার্যকর হবে।
ডেভ সায়ার

7
বিটিডাব্লু পছন্দসই লগিং সিস্টেম হ'ল লগব্যাক, এবং এটিই আপনি স্টার্টার পোমস থেকে ডিফল্টরূপে পান। সুতরাং লগব্যাক.এক্সএমএল একটি সূক্ষ্ম দানাদার উপায়ে লগিং কনফিগার করার সবচেয়ে সাধারণ সরঞ্জাম। --Debug পতাকাটি কয়েকটি নির্বাচিত স্প্রিং লগিং চ্যানেলে স্যুইচ করে।
ডেভ সায়ার

অন্য টিপ, বসন্ত বুটে একটি দুর্দান্ত বেস.এক্সএমএল অন্তর্ভুক্ত রয়েছে । যা একটি দুর্দান্ত সূচনা পয়েন্ট। (আমার বর্ধিত উত্তর দেখুন)।
এম। ডিনুম

@ এমডিনাম আপনার দুর্দান্ত টিপের জন্য আপনাকে আবারও ধন্যবাদ! এখন আমি আমার নিজের কোডের জন্য লগ স্তর পরিবর্তন করতে পারি।
zeodtr

2
মনে হয় আমরা এখন পারব। স্প্রিং v4.1.3. রিলিজ (স্প্রিং বুট v1.2.0.RELEASE সহ) হিসাবে, রিচার্ড (উত্তর বা ইস্যুটির মোডুলো আমার পক্ষে কাজ করে বলে মনে হচ্ছে) এর উত্তর হিসাবে সেটিংগুলি প্রয়োগ করে application.propertiesবা application.ymlপ্রয়োগ করে । :=
এরিক প্লাটোন

108

আপনি আপনার অ্যাপ্লিকেশন.প্রপ্রেটিগুলি ব্যবহার করে এটি করতে পারেন।

logging.level.=ERROR-> রুট লগিং স্তরটিকে ত্রুটি হিসাবে সেট করে
...
logging.level.=DEBUG-> রুট লগিং স্তরটি DEBUG এ

logging.file=${java.io.tmpdir}/myapp.logসেট করে -> TMPDIR / myapp.log

এ নিখুঁত লগ ফাইলের পথ নির্ধারণ করে প্রোফাইলগুলি ব্যবহার করে লগিং সম্পর্কিত অ্যাপ্লিকেশন.প্রপ্রেটিগুলির একটি বুদ্ধিমান ডিফল্ট সেটটি হ'ল : application.properties:

spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log

application-dev.properties:

logging.level.=DEBUG
logging.file=

আপনি যখন আপনার পছন্দসই আইডিই এর ভিতরে বিকাশ করবেন আপনি কেবল -Dspring.profiles.active=devআপনার অ্যাপ্লিকেশনটির চালনা / ডিবাগ কনফিগারেশনে ভিএম যুক্তি যুক্ত করবেন।

এটি আপনাকে লগ ফাইলে আউটপুট লেখার ব্যতীত শুধুমাত্র উত্পাদন এবং ডিবাগ লগিংয়ের সময় লগইনে ত্রুটি দেয়। এটি উন্নয়নের সময় পারফরম্যান্সকে উন্নত করবে (এবং এসএসডি ড্রাইভগুলি কয়েক ঘন্টা চালানোর জন্য সংরক্ষণ করবে;))।


1
অ্যাসাইনমেন্টের জন্য '=' চিহ্নটি কার্যকর হয়নি। বিভাজক হিসাবে অ্যাসাইনমেন্টটি একটি ':' দিয়ে সম্পন্ন হয়েছিল। logging.level.:DEBUG
এলোমেলোভাবে অফফ্লাইভিংহিং

2
আজব, আমার এই সেটআপটি উদাহরণ প্রকল্পে কাজ করছে। '' (স্পেস), '=' এবং ':' চিহ্নগুলি বিভাজনকারী হিসাবে কী হিসাবে বিভাজক ব্যবহৃত হয় বাদে সমানভাবে বিভাজক হিসাবে বিবেচিত হয়। আপনি কি নিশ্চিত যে আপনার কীতে কোনও সাদা জায়গা নেই?
রিচার্ড

1
":" কাজ করে তবে "=" উপেক্ষা করা হয়েছে তা নিশ্চিত করতে পারেন, সম্পাদনা করুন: শীঘ্রই বলেছিলেন, "=" এবং স্তরটির মধ্যে একটি স্থান ছিল। সবকিছু এখন কাজ করে।
মাইক আর

1
এটি আমার পরীক্ষায় এটি কাজ করবে না spring-boot 1.4.0: logging.level.=DEBUGঅ্যাপ্লিকেশন শুরু করতে ব্যর্থ হবে এবং ত্রুটি পেয়েছে:java.lang.ClassCircularityError: java/util/logging/LogRecord
এরিক ওয়াং

2
আমার logging.level.কাছে মনে হয় এটি কেবল একটি সুবিধাযুক্ত সিনট্যাক্টিক শর্টকাট logging.level.root, যা টাইপের সাথে বিভ্রান্ত হওয়ার জন্য (1) কম প্রবণ হিসাবে সম্ভাব্য হিসাবে চিহ্নিত করা যেতে পারে, (2) সম্ভাব্যভাবে আরও স্পষ্ট, এবং (3) =অ্যাসাইনমেন্ট সাইন নিয়ে কাজ করা, যা আরও সামগ্রিক ধারাবাহিকতা সরবরাহ করে কনফিগারেশন ফাইল।
আলাইন BECKER

66

রুট লগিং স্তর সেট করার যথাযথ উপায় হল সম্পত্তিটি ব্যবহার করা logging.level.rootডকুমেন্টেশন দেখুন , যা এই প্রশ্নটি মূলত জিজ্ঞাসা করার পরে আপডেট করা হয়েছে।

উদাহরণ:

logging.level.root=WARN

15

মনে করুন আপনার অ্যাপ্লিকেশনটির প্যাকেজের নাম রয়েছে com.company.myproject। তারপরে আপনি আপনার প্রকল্পের ভিতরে ক্লাসের জন্য লগিং স্তরটি সেট করতে পারেন অ্যাপলিকেশন ropষধি ফাইলগুলিতে নীচে

logging.level.com.company.myproject = DEBUG

logging.level.org.springframework.web = DEBUGএবং logging.level.org.hibernate = DEBUGকেবলমাত্র স্প্রিং ফ্রেমওয়ার্ক ওয়েব এবং হাইবারনেটের ক্লাসের জন্য লগিং স্তর সেট করে।

লগিং ফাইলের অবস্থান ব্যবহারের জন্য

logging.file = / home/ubuntu/myproject.log


14

আপনি যদি স্প্রিং বুটে থাকেন তবে লগিং স্তর সেট করতে, লগিং প্যাটার্নটি কাস্টমাইজ করতে এবং বাহ্যিক ফাইলে লগগুলি সঞ্চয় করতে আপনি সরাসরি অ্যাপ্লিকেশন.প্রপার্টি ফাইলগুলিতে নিম্নলিখিত বৈশিষ্ট্যগুলি যুক্ত করতে পারেন ।

এগুলি বিভিন্ন লগিং স্তর এবং সর্বনিম্ন << সর্বোচ্চ থেকে তার ক্রম।

অফ << ফ্যাটাল << ত্রুটি << সতর্কতা << তথ্য << ডেব << ট্র্যাক << সব

# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.      
logging.file=D:/spring_app_log_file.log

# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

আপনার লগ আরও বিশদভাবে কাস্টমাইজ করতে দয়া করে এই লিঙ্কটি মাধ্যমে পাস করুন।

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html


আমি জানি না তবে লগিং.লেভেল.টেক.হার্ডিক = ট্রেস এটি আমার ক্ষেত্রে কাজ করছে না যখন আমি লগিং.লেভেল.রো ​​= এটির কাজ করে যাচ্ছি
অরবিন্দ কুমার

10

ডেভ সায়ার টিপটি কিছুটা ভালবাসা তা নিশ্চিত করা, কারণ debug=trueঅ্যাপ্লিকেশন.প্রোপার্টি যুক্ত করা সত্যিই ডিবাগ লগিং সক্ষম করবে।


8

আপনি যদি অন্য কোনও লগিং ফ্রেমওয়ার্ক ব্যবহার করতে চান, উদাহরণস্বরূপ লগ 4 জ, আমি খুঁজে পেলাম যে সহজতম পদ্ধতির মধ্যে রয়েছে স্প্রিং বুটগুলির নিজস্ব লগিং নিষ্ক্রিয় করা এবং আপনার নিজের প্রয়োগ করা। এইভাবে আমি প্রতিটি লগলেভেলকে একটি ফাইলের মধ্যে কনফিগার করতে পারি, log4j.xML (আমার ক্ষেত্রে) এটি।

এটি অর্জনের জন্য আপনাকে কেবল আপনার পম.এক্সএমএলগুলিতে এই লাইনগুলি যুক্ত করতে হবে:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

আপনার সম্ভবত ইতিমধ্যে প্রথম নির্ভরতা রয়েছে এবং কেবলমাত্র অন্য দুটি দরকার। দয়া করে মনে রাখবেন, এই উদাহরণটি কেবল লোগ 4 জকে coversেকে রাখে।
এটাই সব, এখন আপনি আপনার লগ 4 জে কনফিগারেশন ফাইলের মধ্যে বুটের জন্য লগিং কনফিগার করতে প্রস্তুত!


এই বর্জনটি আমার পক্ষে কাজ করেছিল। আমার রেস্ট এপি আমার লগ 4 জে নির্ভরতা বাছাই করে নি log4j.properties
ankitjaininfo

তাদের এখন বসন্ত-বুট-স্টার্টার-লগ 4 জ 2 রয়েছে
কল্পনা সনি

4

আপনি DEBUG এ লগ স্তরটি সেট করার চেষ্টা করতে পারেন এটি অ্যাপ্লিকেশনটি শুরু করার সময় এটি সমস্ত কিছু দেখায়

logging.level.root=DEBUG

3

রেকর্ডগুলির জন্য: অফিসিয়াল ডকুমেন্টেশন হিসাবে স্প্রিং বুট v1.2.0.RELEASE এবং স্প্রিং v4.1.3.RELEASE হিসাবে:

লগিংয়ের জন্য আপনার যদি প্রয়োজন একমাত্র পরিবর্তনটি হ'ল বিভিন্ন লগারের স্তর নির্ধারণ করা হয় তবে আপনি "লগিং.লেভেল" উপসর্গটি ব্যবহার করে প্রয়োগ করতে পারেন application

logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR

আপনি "লগিং.ফাইলে" ব্যবহার করে লগ ইন করতে (কনসোল ছাড়াও) কোনও ফাইলের অবস্থানও সেট করতে পারেন।

লগিং সিস্টেমের আরও সূক্ষ্ম-বিন্যস্ত সেটিংস কনফিগার করার জন্য আপনাকে প্রশ্নবিদ্ধ লগিংসিস্টেম দ্বারা সমর্থিত দেশীয় কনফিগারেশন ফর্ম্যাটটি ব্যবহার করতে হবে। ডিফল্টরূপে স্প্রিং বুট সিস্টেমের জন্য এটির ডিফল্ট অবস্থান (যেমন শ্রেণিপথ: লগব্যাক.এক্সএমএল লগব্যাকের জন্য) থেকে স্থানীয় কনফিগারেশনটি তুলতে পারে তবে আপনি "লগিংএকনফিগ" বৈশিষ্ট্যটি ব্যবহার করে কনফিগার ফাইলটির অবস্থান নির্ধারণ করতে পারেন।


2

আপনি যদি আরও বিশদ সেট করতে চান তবে দয়া করে একটি লগ কনফিগার ফাইলের নাম "লগব্যাক.এক্সএমএল" বা "লগব্যাক-স্প্রিং.এক্সএমএল" যুক্ত করুন।

আপনার অ্যাপ্লিকেশন.প্রপার্টি ফাইলগুলিতে, এই জাতীয় ইনপুট:

logging.config: classpath:logback-spring.xml

লব্যাক-স্প্রিং.এক্সএমএলে, এই জাতীয় ইনপুট:

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

        <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">

            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>sys.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">


                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>TRACE</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>business.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <logger name="{project-package-name}" level="TRACE">
            <appender-ref ref="BUSINESS_APPENDER" />
        </logger>

        <root level="INFO">
            <appender-ref ref="ROOT_APPENDER" />
        </root>

    </configuration>

2

বিদ্যমান উত্তরগুলি গ্রেটস। আমি কেবলমাত্র আপনার সাথে একটি নতুন স্প্রিং বুট বৈশিষ্ট্যটি ভাগ করতে চাই যাতে গোষ্ঠী লগগুলিতে এবং পুরো গ্রুপে লগিংয়ের স্তর সেট করে।

দস্তাবেজ থেকে উদাহরণ:

  • লগিং গ্রুপ তৈরি করুন
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
  • গোষ্ঠীর জন্য লগিং স্তর সেট করুন
logging.level.tomcat=TRACE

এটি দুর্দান্ত বৈশিষ্ট্য যা আরও নমনীয়তা নিয়ে আসে।


2

আমার বর্তমান কনফিগ আমি এটা সংজ্ঞায়িত আছে application.yaml যে মত:

logging:
  level:
    ROOT: TRACE

আমি স্প্রিং-বুট ব্যবহার করছি: 2.2.0.RELEASE। আপনি কোনও প্যাকেজ সংজ্ঞায়িত করতে পারেন যার মতো ট্র্যাক স্তর থাকতে হবে।


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

2

বসন্ত বুট প্রকল্পে আমরা logging.level.root = WARN লিখতে পারি তবে এখানে সমস্যাটি হ'ল, আমরা আবার পুনরায় চালু করতে হবে এমনকি আমরা ডিভলটোল নির্ভরতাও যুক্ত করেছি, সম্পত্তি ফাইলে যদি কোনও মান পরিবর্তিত হয় তবে এই সীমাবদ্ধতার জন্য আমি জানতে পেরেছিলাম সমাধান i, এবং আমরা pom.xML এ অ্যাকিউউটর যুক্ত করতে এবং url বারে পোস্টম্যান ক্লায়েন্টের নীচের হিসাবে লগারের স্তরটি পাস করতে পারি http: // লোকালহস্ট: 8080 / লগার / রুট বা http: // লোকালহস্ট: 8080 / লগার / কম .mycompany এবং শরীরে আপনি নীচের মত json ফর্ম্যাটটি পাস করতে পারেন

{
  "configuredLevel": "WARN"
}

1

গ্রহন আইডির ক্ষেত্রে এবং আপনার প্রকল্পটি মার্ভেন হয়, পরিবর্তনগুলি প্রতিফলিত করতে প্রকল্পটি পরিষ্কার এবং নির্মাণ করতে ভুলবেন না।


1

স্প্রিংবুট 2 এর সাহায্যে আপনি যেমন পরিবেশের পরিবর্তনশীল এর সাথে রুট লগিং স্তর নির্ধারণ করতে পারেন:

logging.level.root=DEBUG

অথবা আপনি এই জাতীয় প্যাকেজগুলির জন্য নির্দিষ্ট লগিং সেট করতে পারেন:

logging.level.my.package.name=TRACE

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