प्रौद्योगिकी साझेदारी

परियोजनासु लॉगसङ्ग्रहप्रथाः : प्रौद्योगिकीः, साधनानि, उत्तमप्रथाः च

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


✨✨पर्दे सम्मुखे स्थितानां सर्वेषां मित्राणां प्रतिदिनं शुभकामना। ✨✨ इति
🎈🎈作者主页: अहो आम्🎈🎈

सामग्रीसूची

आमुख

1. समुचितं लॉगिंग-रूपरेखां चिनोतु

2. log framework विन्यस्यताम्

3. समुचितलॉगस्तरस्य उपयोगं कुर्वन्तु

1. लॉग् स्तरस्य अवलोकनम्

2. उचितं लॉग् स्तरं चिनोतु (logbkck इत्येतत् उदाहरणरूपेण अत्र गृह्यताम्)

3. गतिशीलरूपेण लॉगस्तरं समायोजयन्तु

4. लॉग् सन्दर्भसूचनया सह संयुक्तम्

1. SLF4J MDC इत्यस्य उपयोगः

2. Log4j 2 इत्यस्य ThreadContext इत्यस्य उपयोगः

3. सन्दर्भसूचनायाः लाभं लभत

5. वास्तविकसमयनिरीक्षणं केन्द्रीकृतभण्डारणं च

1. ELK स्टैक (इलास्टिकसर्च、लॉगस्टैश、किबाना)

2. लॉग्स् संग्रहीतुं Logstash विन्यस्यताम्

3. दृश्यीकरणाय विश्लेषणाय च किबाना इत्यस्य उपयोगं कुर्वन्तु

4. स्प्लुङ्क्

5. केन्द्रीकृतं भण्डारणं मापनीयता च

निगमन

6. लॉग रोलिंग् तथा आर्काइविंग्

1. log framework इत्यस्य रोलिंग् रणनीतिं विन्यस्यताम्

2. सञ्चिकायाः ​​आकारस्य आधारेण स्क्रॉल करणम्

3. स्क्रॉल रणनीतिं अनुकूलितं कुर्वन्तु

4. पुरातनं लॉग् सञ्चिकाः संग्रहयन्तु

निगमन


आमुख

आधुनिकसॉफ्टवेयरविकासे लॉगिंग् प्रणालीस्थिरतां, समस्यानिवारणं, कार्यप्रदर्शननिरीक्षणं च सुनिश्चित्य महत्त्वपूर्णः भागः अस्ति । अयं लेखः परियोजनासु लॉग-सङ्ग्रहस्य व्यावहारिक-अनुभवे गहनतया ज्ञास्यति तथा च जावा-प्रकल्पेषु सामान्यतया प्रयुक्तानां लॉग-सङ्ग्रह-प्रौद्योगिकीनां, साधनानां, केचन उत्तम-प्रथानां च परिचयं करिष्यति

1. समुचितं लॉगिंग-रूपरेखां चिनोतु

जावा परियोजनासु समुचितं लॉग् फ्रेमवर्क् चयनं लॉग् संग्रहणस्य प्रथमं सोपानम् अस्ति । सामान्यलॉगिंग्-रूपरेखासु Log4j, Logback, SLF4J च सन्ति । अत्र ढांचाचयनार्थं केचन विचाराः सन्ति ।

  • प्रदर्शनम्‌: कतिपयरूपरेखाः कार्यप्रदर्शनस्य दृष्ट्या उत्तमं प्रदर्शनं कर्तुं शक्नुवन्ति, अतः भवतः परियोजनायाः आवश्यकतायाः आधारेण समुचितं चिनुत ।
  • लचीलापनम् : १. केचन रूपरेखाः भिन्न-भिन्न-अनुप्रयोग-परिदृश्यानां अनुकूलतायै अधिक-लचील-विन्यास-निर्गम-विकल्पान् प्रदास्यन्ति ।
  • सामुदायिकसमर्थनम् : १. समस्यानां समये समाधानं नवीनतमविशेषतानां प्रवेशं च सुनिश्चित्य सक्रियसमुदायसमर्थनसहितं निरन्तरं अद्यतनं च ढाञ्चं चिनुत।

2. log framework विन्यस्यताम्

लॉगिंग्-रूपरेखां चयनं कृत्वा परियोजनायाः आवश्यकतानां पूर्तये तस्य समुचितरूपेण विन्यस्तं करणीयम् । सामान्यतया विन्याससञ्चिकाः प्रायः XML अथवा गुणसञ्चिकाः भवन्ति, येषु लॉगस्तरस्य, निर्गमस्वरूपस्य, गन्तव्यस्थानस्य इत्यादीनां विषये सूचना भवति ।

Logback इत्यस्य उदाहरणरूपेण गृहीत्वा सरलं विन्याससञ्चिकायाः ​​उदाहरणं निम्नलिखितम् अस्ति ।

  1. <!-- logback.xml -->
  2. <configuration>
  3. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  4. <encoder>
  5. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  6. </encoder>
  7. </appender>
  8. <appender name="FILE" class="ch.qos.logback.core.FileAppender">
  9. <file>logs/myapp.log</file>
  10. <encoder>
  11. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  12. </encoder>
  13. </appender>
  14. <logger name="com.example" level="DEBUG"/>
  15. <root level="INFO">
  16. <appender-ref ref="CONSOLE"/>
  17. <appender-ref ref="FILE"/>
  18. </root>
  19. </configuration>

उपरिष्टाद् विन्यासः द्वौ Appenders परिभाषयति, एकः console output कृते अपरः file output कृते, तथा च log level तथा output format इति सेट् करोति ।

3. समुचितलॉगस्तरस्य उपयोगं कुर्वन्तु

भवतः परियोजनायां समुचित-लॉगिंग-स्तरस्य उपयोगः भवतः लॉगिंग-प्रणाल्याः अधिकतम-प्रभावशीलतां सुनिश्चित्य प्रमुख-कारकेषु अन्यतमः अस्ति । समुचितं लॉगस्तरं चयनं कृत्वा सुनिश्चितं कर्तुं शक्यते यत् विस्तृतलॉगसूचनायाः समुचितस्तरः विभिन्नेषु वातावरणेषु चरणेषु च प्राप्तः भवति, तथा च प्रणाल्याः कार्यक्षमतां, परिपालनक्षमतां च सुधारयितुम् अत्यधिकं वा अल्पं वा लॉगं जनयितुं परिहरति

1. लॉग् स्तरस्य अवलोकनम्

जावा-लॉगिंग्-रूपरेखायां सामान्य-लॉग-स्तराः अन्तर्भवन्ति :

  1. चिह्न: विस्तृततमं लॉग् सूचनां प्रदाति, प्रायः त्रुटिनिवारणाय उपयुज्यते ।
  2. DEBUG 1 . त्रुटिनिवारणाय विवरणं प्रदाति, विकासाय परीक्षणवातावरणाय च उपयुक्तम् ।
  3. INFO: ९. अनुप्रयोगः सम्यक् कार्यं करोति इति सूचयति महत्त्वपूर्णं रनटाइम् सूचनां प्रदाति ।
  4. सचेत: सम्भाव्यसमस्याः सूचयति येषु ध्यानस्य आवश्यकता भवितुम् अर्हति परन्तु कार्यक्रमस्य सामान्यसञ्चालनं न प्रभावितं करोति ।
  5. त्रुटि: दोषः जातः इति सूचयति, अग्रे प्रक्रियायाः आवश्यकता भवितुम् अर्हति इति ।

2. उचितं लॉग् स्तरं चिनोतु (logbkck इत्येतत् उदाहरणरूपेण अत्र गृह्यताम्)

  1. विकासचरणस्य समये DEBUG इत्यस्य उपयोगं कुर्वन्तु: विकासचरणस्य समये, विकासकानां कोडस्य निरीक्षणं त्रुटिनिवारणं च कर्तुं सहायतार्थं अधिकविस्तृतं लॉग् सूचनां प्राप्तुं DEBUG स्तरस्य उपयोगं कुर्वन्तु ।

  1. public class ExampleClass {
  2. private static final Logger logger = LoggerFactory.getLogger(ExampleClass.class);
  3. public void someMethod() {
  4. // ...
  5. logger.debug("Debug information for developers");
  6. // ...
  7. }
  8. }

उत्पादनवातावरणं INFO इत्यस्य उपयोगं करोति: उत्पादनवातावरणे, अनावश्यकदोषनिवारणसूचनाः न्यूनीकर्तुं महत्त्वपूर्णं रनटाइम् सूचना लॉग् भवति इति सुनिश्चित्य लॉगस्तरं INFO इति सेट् कुर्वन्तु ।

चेतावनी तथा त्रुटिनियन्त्रणम् : १. सम्भाव्यसमस्यानां त्रुटिस्थितीनां च कृते WARN तथा ERROR स्तरयोः उपयोगं कुर्वन्तु । एते स्तराः लॉगिंग्-करणं दलानाम् शीघ्रं प्रणाल्यां समस्यानां पहिचाने समाधानं च कर्तुं साहाय्यं करिष्यन्ति ।

3. गतिशीलरूपेण लॉगस्तरं समायोजयन्तु

केचन लॉगिंग्-रूपरेखाः रनटाइम्-समये लॉग-स्तरस्य गतिशील-समायोजनस्य अनुमतिं ददति, यत् अनुप्रयोगं पुनः आरभ्य विना लॉगिंग्-वर्बोसिटी-समायोजनाय उपयोगी भवति

समुचितलॉगस्तरस्य उपयोगेन विकासदलानि सूचनाविवरणं कार्यप्रदर्शनस्य उपरितनं च उत्तमं संतुलनं कर्तुं शक्नुवन्ति, येन विभिन्नेषु वातावरणेषु परिदृश्येषु च इष्टतमं लॉगिंगपरिणामं सुनिश्चितं भवति

4. लॉग् सन्दर्भसूचनया सह संयुक्तम्

लॉग् सन्दर्भसूचनायाः संयोजनं लॉग-घटनानां पृष्ठभूमिं अधिकतया अवगन्तुं लॉग-अभिलेखेषु अतिरिक्त-सन्दर्भ-सूचनाः योजयितुं भवति । एतत् विशिष्टानुरोधानाम्, उपयोक्तृसत्रस्य, अन्यव्यापारप्रक्रियाणां वा अनुसरणं कर्तुं उपयोगी भवति । जावा परियोजनासु, एकः सामान्यः अभ्यासः अस्ति यत् SLF4J इत्यस्य MDC (Mapped Diagnostic Context) अथवा Log4j 2 इत्यस्य ThreadContext इत्यस्य उपयोगः log context सूचनां योजयितुं भवति ।

1. SLF4J MDC इत्यस्य उपयोगः

SLF4J इत्यस्य MDC अनुरोधस्य अथवा व्यावसायिकप्रक्रियायाः समये लॉगसन्दर्भे कील-मूल्ययुग्मसूचनाः योजयितुं अनुमतिं ददाति, येन सा सम्पूर्णप्रक्रियायां स्थास्यति

  1. import org.slf4j.Logger;
  2. import org.slf4j.LoggerFactory;
  3. import org.slf4j.MDC;
  4. public class RequestContextLogger {
  5. private static final Logger logger = LoggerFactory.getLogger(RequestContextLogger.class);
  6. public void processRequest(String requestId, String userId) {
  7. try {
  8. // 将请求ID和用户ID放入日志上下文
  9. MDC.put("requestId", requestId);
  10. MDC.put("userId", userId);
  11. // 处理请求
  12. logger.info("Processing request");
  13. // ...
  14. } catch (Exception e) {
  15. logger.error("Error processing request", e);
  16. } finally {
  17. // 清理日志上下文,确保不影响其他请求
  18. MDC.clear();
  19. }
  20. }
  21. }

2. Log4j 2 इत्यस्य ThreadContext इत्यस्य उपयोगः

Log4j 2 ThreadContext प्रदाति, यत् SLF4J इत्यस्य MDC इत्यस्य सदृशं भवति तथा च थ्रेड् व्याप्तेः अन्तः कील-मूल्ययुग्मानां सन्दर्भसूचनाम् अपि संग्रहीतुं शक्नोति ।

  1. import org.apache.logging.log4j.LogManager;
  2. import org.apache.logging.log4j.Logger;
  3. import org.apache.logging.log4j.ThreadContext;
  4. public class RequestContextLogger {
  5. private static final Logger logger = LogManager.getLogger(RequestContextLogger.class);
  6. public void processRequest(String requestId, String userId) {
  7. try {
  8. // 将请求ID和用户ID放入日志上下文
  9. ThreadContext.put("requestId", requestId);
  10. ThreadContext.put("userId", userId);
  11. // 处理请求
  12. logger.info("Processing request");
  13. // ...
  14. } catch (Exception e) {
  15. logger.error("Error processing request", e);
  16. } finally {
  17. // 清理日志上下文,确保不影响其他请求
  18. ThreadContext.clearAll();
  19. }
  20. }
  21. }

3. सन्दर्भसूचनायाः लाभं लभत

लॉग-सन्दर्भसूचनाः समावेशयितुं लाभः अस्ति यत् भवान् सम्बन्धित-लॉग-घटनानां श्रृङ्खलां सहसंबद्धं कर्तुं शक्नोति, येन विशिष्ट-अनुरोधस्य अथवा उपयोक्तुः क्रियाणां प्रवाहस्य अनुसन्धानं सुलभं भवति यथा, वितरितप्रणाल्यां, लॉग् मध्ये अद्वितीयं अनुरोध-ID योजयित्वा सम्पूर्णं अनुरोध-संसाधन-प्रक्रिया बहु-सेवासु अनुसन्धानं कर्तुं शक्यते ।

  1. public class DistributedService {
  2. private static final Logger logger = LoggerFactory.getLogger(DistributedService.class);
  3. public void processDistributedRequest(String requestId) {
  4. try {
  5. MDC.put("requestId", requestId);
  6. // 处理分布式请求
  7. logger.info("Processing distributed request");
  8. // ...
  9. } catch (Exception e) {
  10. logger.error("Error processing distributed request", e);
  11. } finally {
  12. MDC.clear();
  13. }
  14. }
  15. }

सन्दर्भसूचनाः संयोजयित्वा, लॉग-अभिलेखाः पृथक्कृताः घटनाः न भवन्ति, अपितु जैविकरूपेण एकत्र सम्बद्धाः भवन्ति, येन प्रणाली-समस्यानिवारणाय, कार्यप्रदर्शन-अनुकूलनाय च अधिकं शक्तिशाली साधनं प्राप्यते

5. वास्तविकसमयनिरीक्षणं केन्द्रीकृतभण्डारणं च

परियोजनायां लॉग-प्रबन्धनस्य महत्त्वपूर्णाः पक्षाः वास्तविकसमयनिरीक्षणं केन्द्रीकृतभण्डारणं च एतेषां साधनानां माध्यमेन दलं वास्तविकसमये प्रणाल्याः चालनस्थितिं निरीक्षितुं शक्नोति, सम्भाव्यसमस्यानां पत्ताङ्गीकरणं कर्तुं शक्नोति, आवश्यकतायां समये समस्यानिवारणं च कर्तुं शक्नोति जावा परियोजनासु सामान्यतया प्रयुक्तानि साधनानि ELK Stack (Elasticsearch, Logstash, Kibana), Splunk इत्यादयः सन्ति ।

1. ELK स्टैक (इलास्टिकसर्च、लॉगस्टैश、किबाना)

ELK Stack इति लॉग् संग्रहणार्थं, भण्डारणार्थं, दृश्यीकरणार्थं च मुक्तस्रोतसाधनानाम् एकः समुच्चयः अस्ति ।

  • इलास्टिकसर्चः २. बृहत् परिमाणेन लॉग्-दत्तांशस्य संग्रहणाय, पुनः प्राप्तुं च उपयुज्यते । एतत् वास्तविकसमयदत्तांशस्य कृते शक्तिशालिनः अन्वेषणविश्लेषणक्षमता प्रदाति ।

  • लॉगस्टैशः २. लॉग् संग्रहणार्थं, छानने, अग्रे प्रेषणार्थं च उपयुज्यते । Logstash भिन्नस्रोताभ्यां log data सामान्यीकृत्य भण्डारणार्थं Elasticsearch प्रति प्रेषयितुं शक्नोति ।

  • किबना : ९. Elasticsearch मध्ये संगृहीतस्य लॉग-दत्तांशस्य प्रश्नस्य, दृश्यीकरणस्य, विश्लेषणस्य च कृते सहजं उपयोक्तृ-अन्तरफलकं प्रदाति । किबाना इत्यनेन सह दलाः डैशबोर्ड्, चार्ट्स्, लॉग् डाटा इत्यस्य गहनविश्लेषणं च कर्तुं शक्नुवन्ति ।

2. लॉग्स् संग्रहीतुं Logstash विन्यस्यताम्

लॉग्स् संग्रहीतुं स्वस्य परियोजनायां Logstash विन्यस्तं करणं ELK Stack कृते महत्त्वपूर्णं सोपानम् अस्ति । Logstash विविधनिवेशस्रोतानां निर्गमलक्ष्याणां च समर्थनं करोति, ये सरलविन्याससञ्चिकानां माध्यमेन परिभाषितुं शक्यन्ते ।

  1. # logstash.conf
  2. input {
  3. file {
  4. path => "/path/to/your/application.log"
  5. start_position => "beginning"
  6. }
  7. }
  8. filter {
  9. # 可添加过滤规则
  10. }
  11. output {
  12. elasticsearch {
  13. hosts => ["localhost:9200"]
  14. index => "your_index_name"
  15. }
  16. }

एतत् उदाहरणं निर्दिष्टमार्गस्य अधः log सञ्चिकानां निरीक्षणार्थं Logstash इनपुट् प्लगिन् विन्यस्यति तथा च Elasticsearch मध्ये आउटपुट् करोति । लॉग्स् मध्ये अतिरिक्तसूचनाः विश्लेषणं, छाननं, योजयितुं वा फ़िल्टर विभागे अतिरिक्तनियमाः योजयितुं शक्यन्ते ।

3. दृश्यीकरणाय विश्लेषणाय च किबाना इत्यस्य उपयोगं कुर्वन्तु

किबाना एकं सहजं उपयोक्तृ-अन्तरफलकं प्रदाति यत् जाल-ब्राउजर्-माध्यमेन अभिगन्तुं शक्यते । किबाना मध्ये भवान् डैशबोर्ड्, चार्ट्स्, जटिलप्रश्नानि विश्लेषणं च कर्तुं शक्नोति ।

किबाना इत्यनेन सह भवन्तः सहजतया एतत् प्राप्तुं शक्नुवन्ति:

  • वास्तविकसमयनिरीक्षणम् : १. वास्तविकसमयस्य लॉग्-दत्तांशं पश्यन्तु तथा च कदापि प्रणाल्याः चालनस्थितिं अवगच्छन्तु ।

  • समस्यानिवारणम् : १. सम्भाव्यसमस्यानां मूलकारणं ज्ञातुं विशिष्टमापदण्डाधारितं लॉग्स् अन्वेष्टुम्।

  • कार्यप्रदर्शनविश्लेषणम् : १. प्रणालीप्रदर्शनस्य अटङ्कानां विश्लेषणार्थं चार्ट्स् तथा दृश्यीकरणसाधनानाम् उपयोगं कुर्वन्तु ।

4. स्प्लुङ्क्

Splunk इत्येतत् अन्यत् व्यापकरूपेण प्रयुक्तं लॉग-प्रबन्धन-उपकरणम् अस्ति यत् लॉग्-सङ्ग्रहाय, अन्वेषणाय, विश्लेषणाय, दृश्यीकरणाय च सर्व-एक-समाधानं प्रदाति ।

  • लॉग संग्रहः : १. Splunk बहुस्रोताभ्यां (सञ्चिकाः, दत्तांशकोशाः, संजालयातायातः इत्यादयः) लॉग्-दत्तांशसङ्ग्रहणं समर्थयति ।

  • वास्तविकसमये अन्वेषणं विश्लेषणं च : १. वास्तविकसमये अन्वेषणविश्लेषणकार्यं प्रदाति, जटिलप्रश्नानां समर्थनं करोति, दृश्य-अन्तरफलकस्य माध्यमेन अन्वेषणपरिणामान् प्रदर्शयति च ।

  • डैशबोर्ड्स् तथा रिपोर्ट्स् : १. उपयोक्तारः प्रणाल्याः कार्यप्रदर्शनस्य निरीक्षणाय विश्लेषणाय च कस्टम् डैशबोर्ड्, रिपोर्ट् च निर्मातुम् अर्हन्ति ।

5. केन्द्रीकृतं भण्डारणं मापनीयता च

ELK Stack तथा Splunk इत्येतयोः द्वयोः अपि शक्तिशालिनः केन्द्रीकृतभण्डारणतन्त्राणि सन्ति ये बृहत् परिमाणेन log data संग्रहीतुं शक्नुवन्ति । इदं केन्द्रीकृतं भण्डारणं न केवलं लॉग-पुनर्प्राप्तिः विश्लेषणं च सुलभं करोति, अपितु प्रणाल्याः मापनीयतां अपि प्रदाति तथा च बृहत्-परिमाणस्य अनुप्रयोग-लॉग्-सञ्चालनं कर्तुं शक्नोति

निगमन

परियोजनायाः स्थिरतां कार्यक्षमतां च सुनिश्चित्य वास्तविकसमयनिरीक्षणं केन्द्रीकृतभण्डारणं च प्रमुखं भवति । ELK Stack तथा Splunk इत्यादीनां साधनानां उपयोगेन परियोजनादलः जटिलप्रणालीवातावरणेषु वास्तविकसमये लॉग्स् अनुसरणं कर्तुं शक्नोति तथा च समये समस्यानिवारणं कार्यप्रदर्शनस्य अनुकूलनं च कर्तुं शक्नोति एतेषां साधनानां शक्तिः न केवलं दलदक्षतां वर्धयति, अपितु परियोजनासु उत्तमं परिपालनं, मापनीयतां च प्रदाति ।

6. लॉग रोलिंग् तथा आर्काइविंग्

लॉग रोलिंग् तथा आर्काइविंग् परियोजनायां महत्त्वपूर्णाः अभ्यासाः सन्ति ते लॉग सञ्चिकानां उचितप्रबन्धनं सुनिश्चितयन्ति, अत्यधिकलॉग् सञ्चिकानां कारणेन भण्डारणसमस्यां निवारयन्ति, प्रणाल्याः सामान्यसञ्चालनं निर्वाहयितुं च सहायकाः भवन्ति जावा परियोजनासु log rolling तथा archiving इत्यस्य कार्यान्वयनार्थं निम्नलिखितम् केचन सामान्याः अभ्यासाः सन्ति ।

1. log framework इत्यस्य रोलिंग् रणनीतिं विन्यस्यताम्

अधिकांशः लॉगिंग् फ्रेमवर्क्स् रोलिंग् रणनीतयः प्रदाति ये विन्याससञ्चिकानां माध्यमेन सेट् कर्तुं शक्यन्ते । एताः नीतयः कदा नूतनानां लॉग्-सञ्चिकासु रोल-ओवर-करणं कर्तव्यं, कदा पुरातन-लॉग्-सञ्चिकाः विलोपनीयाः इति निर्धारयन्ति । Logback उदाहरणरूपेण गृहीत्वा, मूलभूतं रोलिंग् रणनीतिं विन्यस्यताम्:

  1. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  2. <file>logs/myapp.log</file>
  3. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  4. <fileNamePattern>logs/myapp.%d{yyyy-MM-dd}.log</fileNamePattern>
  5. <maxHistory>30</maxHistory>
  6. </rollingPolicy>
  7. <encoder>
  8. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  9. </encoder>
  10. </appender>

उपरिष्टाद् विन्यासः उपयुज्यतेTimeBasedRollingPolicy, यत् समयाधारितं log सञ्चिकां रोल करिष्यति ।maxHistoryऐतिहासिक-लॉग-सञ्चिकानां संख्यां निर्दिशति यत् एतां संख्यां अतिक्रम्य लॉग-सञ्चिकाः विलोपिताः भविष्यन्ति ।

2. सञ्चिकायाः ​​आकारस्य आधारेण स्क्रॉल करणम्

कदाचित्, कालेन रोलिंग् पर्याप्तं न भवेत्, अपि च भवद्भिः लॉग् सञ्चिकायाः ​​आकारस्य आधारेण रोल करणीयम् अपि । सञ्चिकायाः ​​आकारं विन्यस्य एतत् प्राप्तुं शक्यते :

  1. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  2. <file>logs/myapp.log</file>
  3. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  4. <fileNamePattern>logs/myapp.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  5. <maxFileSize>5MB</maxFileSize>
  6. <maxHistory>30</maxHistory>
  7. </rollingPolicy>
  8. <encoder>
  9. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  10. </encoder>
  11. </appender>

उपरिष्टाद् विन्यासः उपयुज्यतेSizeAndTimeBasedRollingPolicy, यत् सञ्चिकायाः ​​आकारस्य समयस्य च आधारेण लॉग् सञ्चिकाः रोल करोति ।maxFileSizeप्रत्येकस्य लॉग् सञ्चिकायाः ​​अधिकतमं आकारं निर्दिशति ।

3. स्क्रॉल रणनीतिं अनुकूलितं कुर्वन्तु

कदाचित्, परियोजनासु कस्टम् शर्तानाम् आधारेण लॉग्स् रोल कर्तुं आवश्यकता भवितुम् अर्हति । अस्मिन् सन्दर्भे कस्टम् स्क्रॉल-रणनीतिं कार्यान्वितुं विचारयन्तु । यथा, विशिष्टव्यापारनियमानाम् आधारेण लॉगसञ्चिकानां रोलिंग् :

  1. public class CustomRollingPolicy extends TimeBasedRollingPolicy<ILoggingEvent> {
  2. // 实现自定义的滚动逻辑
  3. }

ततः विन्याससञ्चिकायां कस्टम् स्क्रॉलिंग् रणनीतिं उपयुज्यताम् :

  1. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  2. <file>logs/myapp.log</file>
  3. <rollingPolicy class="com.example.CustomRollingPolicy">
  4. <!-- 自定义配置 -->
  5. </rollingPolicy>
  6. <encoder>
  7. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  8. </encoder>
  9. </appender>

4. पुरातनं लॉग् सञ्चिकाः संग्रहयन्तु

लॉग् सञ्चिकानां रोलिंग् इत्यस्य अतिरिक्तं पुरातनलॉग् सञ्चिकानां संग्रहणं अपि सामान्यः अभ्यासः अस्ति । एतत् नियमितरूपेण पुरातन-लॉग्-सञ्चिकाः आर्काइव्-निर्देशिकायां स्थानान्तरयित्वा तेषां अधिकं डिस्क-स्थानं न गृह्णाति इति साधयितुं शक्यते ।

अथवा जावा-सङ्केते कार्यान्वितुं प्रोग्रामेटिक-पद्धतेः उपयोगं कुर्वन्तु:

  1. import java.io.File;
  2. import java.nio.file.Files;
  3. import java.nio.file.Path;
  4. import java.nio.file.StandardCopyOption;
  5. import java.time.LocalDate;
  6. import java.time.format.DateTimeFormatter;
  7. public class LogArchiver {
  8. public static void archiveLogFile(String logFileName, String archiveDirectory) {
  9. String currentDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
  10. File logFile = new File(logFileName);
  11. File archiveDir = new File(archiveDirectory);
  12. if (!archiveDir.exists()) {
  13. archiveDir.mkdirs();
  14. }
  15. Path sourcePath = logFile.toPath();
  16. Path targetPath = new File(archiveDir, logFile.getName() + "." + currentDate + ".log").toPath();
  17. try {
  18. Files.move(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. }

आवधिककार्येषु आहूताःarchiveLogFileएषा पद्धतिः लॉग् सञ्चिकानां संग्रहणार्थं उपयोक्तुं शक्यते ।

लॉग् रोलिंग् तथा आर्काइविंग् इत्यस्य कार्यान्वयनेन परियोजनाः लॉग् सञ्चिकाः अधिकतया प्रबन्धयितुं शक्नुवन्ति तथा च सुनिश्चितं कुर्वन्ति यत् प्रणाली दीर्घकालं यावत् उत्तमं प्रदर्शनं निर्वाहयति एतत् न केवलं समस्यानिवारणाय सहायकं भवति, अपितु अनुपालनस्य आवश्यकतासु अपि सहायकं भवति ।

निगमन

एकं समुचितं लॉगिंग-रूपरेखां चयनं कृत्वा, तस्य समुचितरूपेण विन्यस्तं कृत्वा, समुचित-लॉग-स्तरस्य उपयोगेन, सन्दर्भ-सूचनाः च संयोजयित्वा, परियोजनाः एकं शक्तिशालीं लॉगिंग-प्रणालीं निर्मातुम् अर्हन्ति यत् समस्यानिवारणाय, कार्यप्रदर्शन-अनुकूलनस्य, प्रणाली-निरीक्षणाय च सशक्तं समर्थनं प्रदाति तस्मिन् एव काले वास्तविकसमयनिरीक्षणं केन्द्रीकृतभण्डारणं च दलानाम् कृते प्रणाल्याः स्थितिं निरीक्षितुं अधिकसुलभसाधनं प्रदाति । सावधानीपूर्वकं लकडीकरणं न केवलं परियोजनाविकासाय तकनीकीप्रथा अस्ति, अपितु दलस्य समग्रदक्षतायाः परियोजनायाः गुणवत्तायाः च उन्नयनार्थं महत्त्वपूर्णा गारण्टी अपि अस्ति