MessageLogging नीति

Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

क्या

मैसेज को लॉग करना, एपीआई रनटाइम एनवायरमेंट में समस्याओं को ट्रैक करने का सबसे अच्छा तरीका है. अपने एपीआई पर MessageLogging नीति को अटैच और कॉन्फ़िगर किया जा सकता है, ताकि कस्टम मैसेज को किसी लोकल डिस्क (सिर्फ़ निजी क्लाउड के लिए Edge) या सिग्नल प्रोसेसिंग सिस्टम (एसआईएसएल) में लॉग किया जा सके.

सैंपल

Syslog

<MessageLogging name="LogToSyslog">
  <Syslog>
    <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
    <Host>logs-01.loggly.com</Host>
    <Port>514</Port>
    <Protocol>TCP</Protocol>
    <FormatMessage>true</FormatMessage>
    <DateFormat>yyyy-MM-dd'T'HH:mm:ss.SSSZ</DateFormat>
  </Syslog>
  <logLevel>ALERT</logLevel>
</MessageLogging>

MessageLogging नीति टाइप का आम तौर पर इस्तेमाल, किसी सिस्प्ले लॉग खाते में लॉग करने के लिए किया जाता है. जब एपीआई प्रॉक्सी को syslog के लिए कॉन्फ़िगर किया जाता है, तो वह Apigee Edge से रिमोट syslog सर्वर पर लॉग मैसेज फ़ॉरवर्ड करेगा. आपके पास पहले से ही एक सिस्टम लॉग सर्वर होना चाहिए. अगर ऐसा नहीं है, तो Splunk, Sumo Logic, और Loggly जैसी सार्वजनिक लॉग मैनेजमेंट सेवाएं उपलब्ध हैं. तीसरे पक्ष की लॉग मैनेजमेंट सेवाओं को कॉन्फ़िगर करना लेख पढ़ें.

उदाहरण के लिए, मान लें कि आपको हर उस अनुरोध मैसेज की जानकारी को लॉग करना है जो आपके एपीआई को उपभोक्ता ऐप्लिकेशन से मिलता है. वैल्यू 3f509b58, loggly सेवा के लिए खास तौर पर बनाई गई एक मुख्य वैल्यू के बारे में बताती है. अगर आपके पास loggly खाता है, तो अपनी loggly कुंजी डालें. जनरेट किए गए लॉग मैसेज में चार वैल्यू अपने-आप भर जाएंगी: लेन-देन से जुड़े संगठन, एपीआई प्रोक्सी, और एनवायरमेंट का नाम. साथ ही, अनुरोध मैसेज में क्वेरी पैरामीटर की वैल्यू भी अपने-आप भर जाएगी.

अगर आपके पास निजी क्लाउड डिप्लॉयमेंट के लिए Edge है, तो आपके पास किसी फ़ाइल में लॉग मैसेज लिखने का भी विकल्प है.

TLS/SSL पर Syslog

<MessageLogging name="LogToSyslog">
  <Syslog>
    <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
    <Host>logs-01.loggly.com</Host>
    <Port>6514</Port>
    <Protocol>TCP</Protocol>
    <FormatMessage>true</FormatMessage>
    <SSLInfo>
        <Enabled>true</Enabled>
    </SSLInfo>
    <DateFormat>yyMMdd-HH:mm:ss.SSS</DateFormat>
  </Syslog>
  <logLevel>WARN</logLevel>
</MessageLogging>

<SSLInfo> ब्लॉक जोड़कर, मैसेज लॉग करने की सेवा देने वाली तीसरे पक्ष की कंपनियों को TLS/SSL के ज़रिए मैसेज भेजे जा सकते हैं.

फ़ाइल का रोटेशन: साइज़

<MessageLogging name="LogPolicy">
  <File>
    <Message>This is a test message. Message id : {request.header.messageid}</Message>
      <FileName>test.log</FileName>
      <FileRotationOptions rotateFileOnStartup="true">
        <FileRotationType>SIZE</FileRotationType>
        <MaxFileSizeInMB>10</MaxFileSizeInMB>
        <MaxFilesToRetain>10</MaxFilesToRetain>
      </FileRotationOptions>
  </File>
  <logLevel>ERROR</logLevel>
</MessageLogging>

फ़ाइल के साइज़ के आधार पर फ़ाइल घुमाना.

फ़ाइल रोटेशन: समय

<MessageLogging name="LogPolicy">
  <File>
    <Message>This is a test message. Message id : {request.header.messageid}</Message>
    <FileName>test.log</FileName>
    <FileRotationOptions rotateFileOnStartup="true">
      <FileRotationType>TIME</FileRotationType>
      <RotationFrequency unit="minute">10</RotationFrequency>
      <MaxFilesToRetain>10</MaxFilesToRetain>
    </FileRotationOptions>
  </File>
  <logLevel>ERROR</logLevel>
</MessageLogging>

समय के आधार पर फ़ाइल रोटेशन.

फ़ाइल का घुमाव: समय और साइज़

<MessageLogging name="LogPolicy">
  <File>
    <Message>This is a test message. Message id : {request.header.messageid}</Message>
    <FileName>test.log</FileName>
    <FileRotationOptions rotateFileOnStartup="true">
      <FileRotationType>TIME_SIZE</FileRotationType>
      <MaxFileSizeInMB>10</MaxFileSizeInMB>
      <MaxFilesToRetain>10</MaxFilesToRetain>
      <RotationFrequency unit="minute">10</RotationFrequency>
    </FileRotationOptions>
  </File>
  <logLevel>ERROR</logLevel>
</MessageLogging>

समय और साइज़ के आधार पर फ़ाइल रोटेशन.

स्ट्रीम करने की सुविधा चालू हो

<MessageLogging name="LogPolicy">
  <File>
  ....
  ....
  </File>
  <BufferMessage>true</BufferMessage>
</MessageLogging>

स्ट्रीम की सुविधा वाले मैसेज को लॉग करना


एलिमेंट का रेफ़रंस

MessageLogging नीति के टाइप को कॉन्फ़िगर करने के लिए, इन एलिमेंट का इस्तेमाल करें.

फ़ील्ड का नाम फ़ील्ड का ब्यौरा

File

लोकल फ़ाइल का डेस्टिनेशन. (फ़ाइल लॉगिंग की सुविधा, सिर्फ़ निजी क्लाउड के डिप्लॉयमेंट के लिए उपलब्ध है.) फ़ाइलें कहां सेव की जाती हैं, इस बारे में जानने के लिए Edge for Private Cloud में लॉग फ़ाइल की जगह लेख पढ़ें.

Message लॉग फ़ाइल में भेजे जाने वाले मैसेज को बनाएं. इसके लिए, अपनी पसंद की जानकारी कैप्चर करने के लिए, टेक्स्ट को वैरिएबल के साथ जोड़ें. सैंपल देखें.
FileName लॉग फ़ाइल का बेस नाम. फ़ाइल का पाथ न दें. उदाहरण के लिए, यह FileName एलिमेंट, फ़ाइल पाथ की जानकारी देता है और यह अमान्य है:
<FileName>/opt/apigee/var/log/messages/mylog.log</FileName>

यह कोड सिर्फ़ फ़ाइल का नाम बताता है और यह मान्य है:

<FileName>mylog.log</FileName>

फ़ाइल को सेव करने की जगह के बारे में जानने के लिए, Edge for Private Cloud में लॉग फ़ाइल की जगह लेख पढ़ें.

FileRotationOptions
rotateFileOnStartup

एट्रिब्यूट. मान्य वैल्यू: true/false

अगर इसे 'सही है' पर सेट किया जाता है, तो मैसेजिंग इंजन के रीस्टार्ट होने पर, लॉग फ़ाइल को रोटेट किया जाता है.

FileRotationType लॉग फ़ाइल के रोटेशन की नीति (size या time) तय करता है.
MaxFileSizeInMB (रोटेशन टाइप के तौर पर size चुनने पर) यह लॉग फ़ाइल का साइज़ तय करता है. इससे सर्वर, लॉग मैसेज को एक अलग फ़ाइल में ले जाता है. लॉग फ़ाइल तय किए गए साइज़ तक पहुंचने के बाद, सर्वर मौजूदा लॉग फ़ाइल का नाम बदल देता है.
RotationFrequency (रोटेशन टाइप के तौर पर time चुनने पर) यह मिनट में वह समय तय करता है जिस पर सर्वर, लॉग मैसेज को अलग फ़ाइल में ले जाता है. तय समयसीमा खत्म होने के बाद, मौजूदा लॉग फ़ाइल का नाम बदल दिया जाता है.
MaxFilesToRetain

यह आपकी रोटेशन सेटिंग के हिसाब से, सेव की जाने वाली फ़ाइलों की ज़्यादा से ज़्यादा संख्या तय करता है. डिफ़ॉल्ट वैल्यू 8 है.

अगर आपने शून्य (0) चुना है, तो लॉग फ़ाइलें हमेशा के लिए सेव रहती हैं. हालांकि, ये फ़ाइलें, फ़ाइल रोटेशन की आपकी सेटिंग के हिसाब से सेव रहती हैं. हालांकि, इनमें से किसी भी फ़ाइल को मिटाया या उसका नाम नहीं बदला जाता. इसलिए, आने वाले समय में डिस्क भर जाने से जुड़ी गड़बड़ियों से बचने के लिए, इसे शून्य से ज़्यादा की वैल्यू पर सेट करें. इसके अलावा, पुरानी लॉग फ़ाइलों को अपने-आप मिटाने या संग्रहित करने के लिए, नियमित तौर पर काम करने वाला सिस्टम लागू करें.

BufferMessage

अगर आपकी प्रॉक्सी के लिए एचटीटीपी स्ट्रीमिंग की सुविधा चालू है, तो अनुरोध/जवाब वाले मैसेज बफ़र नहीं किए जाते. अगर आपको ऐसा कॉन्टेंट लॉग करना है जिसके लिए फ़्लो मैसेज को पार्स करना ज़रूरी है, तो BufferMessage को 'सही' पर सेट करें. उदाहरण के लिए, "स्ट्रीम करने की सुविधा चालू है" सैंपल टैब देखें. डिफ़ॉल्ट: गलत

Syslog

कोई सिग्नललॉग डेस्टिनेशन. Splunk, Sumo Logic या Loggly को सिस्लॉग भेजने के लिए, तीसरे पक्ष की लॉग मैनेजमेंट सेवाओं को कॉन्फ़िगर करना लेख पढ़ें.

Message

syslog को भेजे जाने वाले मैसेज को बनाएं. इसके लिए, अपनी पसंद की जानकारी कैप्चर करने के लिए, टेक्स्ट को वैरिएबल के साथ जोड़ें. सैंपल देखें.

ध्यान दें: गड़बड़ी वाले फ़्लो के बाद, PostClientFlow में रिस्पॉन्स वैरिएबल उपलब्ध नहीं होंगे. गड़बड़ी और सफलता, दोनों स्थितियों के लिए रिस्पॉन्स की जानकारी को लॉग करने के लिए, मैसेज वैरिएबल का इस्तेमाल करें. इस्तेमाल से जुड़ी जानकारी भी देखें.

Host उस सर्वर का होस्टनेम या आईपी पता जहां syslog भेजा जाना चाहिए. अगर इस एलिमेंट को शामिल नहीं किया जाता है, तो डिफ़ॉल्ट तौर पर localhost का इस्तेमाल किया जाता है.
Port वह पोर्ट जहां syslog चल रहा है. अगर इस एलिमेंट को शामिल नहीं किया जाता है, तो डिफ़ॉल्ट वैल्यू 514 होगी.
Protocol टीसीपी या यूडीपी (डिफ़ॉल्ट). यूडीपी की परफ़ॉर्मेंस बेहतर होती है, लेकिन टीसीपी प्रोटोकॉल, syslog सर्वर पर मैसेज लॉग डिलीवरी की गारंटी देता है. TLS/एसएसएल पर syslog मैसेज भेजने के लिए, सिर्फ़ टीसीपी काम करता है.
FormatMessage

true या false (डिफ़ॉल्ट)

ज़रूरी नहीं है, लेकिन Loggly के साथ इस्तेमाल करने के लिए <FormatMessage>true</FormatMessage> ज़रूरी है.

इस एलिमेंट की मदद से, मैसेज के शुरू में जोड़े गए Apigee से जनरेट किए गए कॉन्टेंट के फ़ॉर्मैट को कंट्रोल किया जा सकता है. अगर इस विकल्प को 'सही है' पर सेट किया जाता है, तो syslog मैसेज के शुरू में एक तय संख्या में वर्ण जोड़ दिए जाते हैं. इससे, मैसेज से उस जानकारी को फ़िल्टर किया जा सकता है. यहां फ़िक्स किए गए फ़ॉर्मैट का उदाहरण दिया गया है:

<14>1 2023-03-20T09:24:39.039+0000 e49cd3a9-4cf6-48a7-abb9-7ftfe4d97d00 Apigee-Edge - - - Message starts here

Apigee से जनरेट की गई जानकारी में ये चीज़ें शामिल हैं:

  • <14> - मैसेज के लॉग लेवल और सुविधा के लेवल के आधार पर प्राथमिकता का स्कोर (Syslog प्रोटोकॉल देखें).
  • 1 - syslog का मौजूदा वर्शन.
  • यूटीसी ऑफ़सेट (यूटीसी = +0000) वाली तारीख.
  • मैसेज प्रोसेसर का यूयूआईडी.
  • "Apigee-Edge - - - "

अगर इसे 'गलत है' (डिफ़ॉल्ट) पर सेट किया जाता है, तो मैसेज के शुरू में उन तय किए गए वर्णों को नहीं जोड़ा जाता.

PayloadOnly

true या false (डिफ़ॉल्ट)

यह एलिमेंट, Apigee से जनरेट किए गए मैसेज का फ़ॉर्मैट सेट करता है, ताकि उसमें सिर्फ़ syslog मैसेज का मुख्य हिस्सा शामिल हो. इसमें FormatMessage से तय किए गए पहले के वर्ण शामिल नहीं होते.

इस एलिमेंट को शामिल न करने या इसे खाली छोड़ने पर, डिफ़ॉल्ट वैल्यू false होती है.

FormatMessage देखें.

DateFormat

ज़रूरी नहीं.

फ़ॉर्मैटिंग टेंप्लेट स्ट्रिंग, जिसका इस्तेमाल हर लॉग मैसेज के टाइमस्टैंप को फ़ॉर्मैट करने के लिए किया जाता है. डिफ़ॉल्ट रूप से, Apigee yyyy-MM-dd'T'HH:mm:ss.SSSZ का इस्तेमाल करता है. इस टेंप्लेट के काम करने के तरीके के बारे में Java की SimpleDateFormat क्लास के दस्तावेज़ में बताया गया है.

SSLInfo

एसएसएल/टीएलएस के ज़रिए मैसेज को लॉग करने की सुविधा देता है. सब-एलिमेंट <Enabled>true</Enabled> के साथ इस्तेमाल करें.

इस एलिमेंट को शामिल न करने या इसे खाली छोड़ने पर, डिफ़ॉल्ट वैल्यू के तौर पर 'गलत' (कोई TLS/SSL नहीं) दिखेगी.

<SSLInfo>
    <Enabled>true</Enabled>
</SSLInfo>

<SSLInfo> टैग को उसी तरह कॉन्फ़िगर किया जा सकता है जिस तरह TargetEndpoint को कॉन्फ़िगर किया जाता है. इसमें, एपीआई प्रॉक्सी कॉन्फ़िगरेशन रेफ़रंस में बताए गए तरीके के मुताबिक, दोतरफ़ा TLS/एसएसएल को चालू करना भी शामिल है. सिर्फ़ TCP प्रोटोकॉल का इस्तेमाल किया जा सकता है.

logLevel

ज़रूरी नहीं.

मान्य वैल्यू: INFO (डिफ़ॉल्ट), ALERT, WARN, ERROR

मैसेज लॉग में शामिल करने के लिए, जानकारी का कोई लेवल सेट करें.

अगर FormatMessage एलिमेंट का इस्तेमाल किया जा रहा है (इसे 'सही' पर सेट किया जा रहा है), तो आपकी logLevel सेटिंग का असर, मैसेज के आगे Apigee की जनरेट की गई जानकारी में, कैलकुलेट किए गए प्राथमिकता स्कोर (ऐंगल ब्रैकेट में मौजूद संख्या) पर पड़ता है.

स्कीमा


इस्तेमाल से जुड़ी जानकारी

किसी एपीआई प्रॉक्सी फ़्लो में MessageLogging नीति अटैच करते समय, इसे ProxyEndpoint रिस्पॉन्स में, PostClientFlow नाम के खास फ़्लो में डालें. अनुरोध करने वाले क्लाइंट को जवाब भेजने के बाद, PostClientFlow ट्रिगर होता है. इससे यह पक्का होता है कि सभी मेट्रिक, लॉग करने के लिए उपलब्ध हों. PostClientFlow का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, एपीआई प्रॉक्सी कॉन्फ़िगरेशन का रेफ़रंस देखें.

PostClientFlow दो तरीकों से खास है:

  1. यह सिर्फ़ रिस्पॉन्स फ़्लो के हिस्से के तौर पर लागू होता है.
  2. यह प्रोक्सी के गड़बड़ी की स्थिति में आने के बाद, चलाया जाने वाला एकमात्र फ़्लो है.

यह प्रोसेस, प्रॉक्सी के काम करने या न करने के बावजूद लागू होती है. इसलिए, PostClientFlow में MessageLogging की नीतियां डाली जा सकती हैं. इससे यह पक्का किया जा सकता है कि ये नीतियां हमेशा लागू हों.

नीचे दी गई ट्रैक इमेज में, DefaultFaultRule लागू होने के बाद, PostClientFlow के हिस्से के तौर पर MessageLogging नीति लागू होने की जानकारी दी गई है:

इस उदाहरण में, एपीआई पासकोड की पुष्टि करने की नीति की वजह से गड़बड़ी हुई, क्योंकि पासकोड अमान्य था.

यहां ProxyEndpoint की परिभाषा दी गई है, जिसमें PostClientFlow शामिल है:

<ProxyEndpoint name="default">
  ...
  <PostClientFlow>
    <Response>
      <Step>
        <Name>Message-Logging-1</Name>
      </Step>
    </Response>
  </PostClientFlow>
  ...
</ProxyEndpoint>

Edge, मैसेज को सामान्य टेक्स्ट के तौर पर लॉग करता है. साथ ही, लॉगिंग को कॉन्फ़िगर करके वैरिएबल शामिल किए जा सकते हैं. जैसे, अनुरोध या जवाब मिलने की तारीख और समय, अनुरोध पर उपयोगकर्ता की पहचान, वह सोर्स आईपी पता जिससे अनुरोध भेजा गया था वगैरह. Edge, मैसेज को एक साथ रिकॉर्ड नहीं करता. इसका मतलब है कि आपके एपीआई में कॉलआउट को ब्लॉक करने की वजह से कोई लैटेंसी नहीं आती.

MessageLogging नीति, मेमोरी में लॉग किए गए मैसेज को बफ़र में लिखती है. मैसेज लॉगर, बफ़र से मैसेज पढ़ता है और फिर कॉन्फ़िगर किए गए डेस्टिनेशन पर लिखता है. हर डेस्टिनेशन का अपना बफ़र होता है.

अगर बफ़र में डेटा लिखने की दर, डेटा पढ़ने की दर से ज़्यादा हो जाती है, तो बफ़र ओवरफ़्लो हो जाता है और डेटा लॉग नहीं हो पाता. ऐसा होने पर, आपको लॉग फ़ाइल में यह मैसेज दिख सकता है:

Log message size exceeded. Increase the max message size setting

अगर आपको Edge for Private Cloud 4.15.07 और उससे पहले के वर्शन में यह समस्या आती है, तो message-logging.properties फ़ाइल ढूंढें और इस तरीके का इस्तेमाल करें:

message-logging.properties फ़ाइल में max.log.message.size.in.kb प्रॉपर्टी (डिफ़ॉल्ट वैल्यू = 128 केबी) की वैल्यू बढ़ाएं.

Edge for Private Cloud 4.16.01 और उसके बाद के वर्शन के लिए, /opt/apigee/customer/application/message-processor.properties फ़ाइल में conf/message-logging.properties+max. log.message.size.in.kb प्रॉपर्टी सेट करें और मैसेज प्रोसेसर को फिर से शुरू करें. कृपया ध्यान दें कि इस प्रॉपर्टी को शुरुआत में डिफ़ॉल्ट रूप से हटा दिया जाता है.

ध्यान दें: Edge में जवाब वाले मैसेज के वैरिएबल, गड़बड़ी के फ़्लो से उपलब्ध नहीं हैं. अगर पिछला फ़्लो गड़बड़ी वाला फ़्लो था, तो ये वैरिएबल PostClientFlow में भी उपलब्ध नहीं होते. अगर आपको PostClientFlow से मिले जवाब की जानकारी को लॉग करना है, तो message ऑब्जेक्ट का इस्तेमाल करें. इस ऑब्जेक्ट का इस्तेमाल करके, रिस्पॉन्स में मौजूद हेडर और अन्य जानकारी हासिल की जा सकती है. भले ही, कोई गड़बड़ी हुई हो या नहीं. ज़्यादा जानकारी और उदाहरण के लिए, मैसेज के वैरिएबल देखें.

Edge for Private Cloud में, लॉग मैसेज के टाइमस्टैंप को कंट्रोल करना

डिफ़ॉल्ट रूप से, सभी लॉग मैसेज में टाइमस्टैंप का यह फ़ॉर्मैट होता है:

yyyy-MM-dd'T'HH:mm:ss.SSSZ

सिस्टम के लिए डिफ़ॉल्ट तौर पर लागू होने वाली इस सेटिंग को, syslog डेस्टिनेशन के लिए बदला जा सकता है. इसके लिए, DateFormat एलिमेंट का इस्तेमाल करें. इस टेंप्लेट के काम करने के तरीके के बारे में, Java की SimpleDateFormat क्लास के दस्तावेज़ में बताया गया है. इस परिभाषा के मुताबिक, yyyy की जगह साल के चार अंक, MM की जगह महीने के दो अंक वगैरह डाल दिए जाएंगे. ऊपर दिए गए फ़ॉर्मैट से, इस तरह की स्ट्रिंग मिल सकती है:

2022-09-28T22:38:11.721+0000

उस फ़ॉर्मैट को कंट्रोल करने के लिए, Edge Message Processor पर conf_system_apigee.syslogger.dateFormat प्रॉपर्टी का इस्तेमाल किया जा सकता है. उदाहरण के लिए, मैसेज का फ़ॉर्मैट बदलकर:

yy/MM/dd'T'HH:mm:ss.SSSZ

..डैश को स्लैश से बदलकर, साल को दो अंकों में छोटा करके, टाइमस्टैंप को इस फ़ॉर्मैट में रिकॉर्ड किया जाता है:

22/09/28T22:38:11.721+0000

फ़ॉर्मैट बदलने के लिए:

  1. message-processor.properties फ़ाइल को किसी एडिटर में खोलें. अगर फ़ाइल मौजूद नहीं है, तो उसे बनाएं:
    > vi /opt/apigee/customer/application/message-processor.properties
  2. प्रॉपर्टी को अपनी पसंद के मुताबिक सेट करें:
    conf_system_apigee.syslogger.dateFormat=yy/MM/dd'T'HH:mm:ss.SSSZ
  3. बदलावों को सेव करें.
  4. पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक 'apigee' उपयोगकर्ता के पास हो:
    > chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Edge Message Processor को रीस्टार्ट करें:
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Edge for Private Cloud में फ़ाइल की जगह को लॉग करना

Edge for Private Cloud 4.16.01 और इसके बाद के वर्शन

डिफ़ॉल्ट रूप से, निजी क्लाउड के मैसेज लॉग, मैसेज प्रोसेसर नोड पर इस डायरेक्ट्री में मौजूद होते हैं:

/opt/apigee/var/log/edge-message-processor/messagelogging/org_name/environment/api_proxy_name/revision/logging_policy_name/

मैसेज प्रोसेसर पर मौजूद, message-logging.properties फ़ाइल में प्रॉपर्टी में बदलाव करके, लॉग की डिफ़ॉल्ट जगह बदली जा सकती है:

  • bin_setenv_data_dir - लॉग फ़ाइल के स्टोरेज के लिए रूट पाथ सेट करता है. उदाहरण के लिए, bin_setenv_data_dir=/opt/apigee/var/log
  • conf_message-logging_log.root.dir - अगर इसे किसी रिलेटिव पाथ पर सेट किया जाता है, जैसे कि conf/message-logging.properties+log.root.dir=custom/folder/, the path is appended to the bin_setenv_data_dir location.

    अगर इसे किसी एब्सोल्यूट पाथ पर सेट किया जाता है, जैसे कि conf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages, तो मैसेज के लॉग /opt/apigee/var/log/messages/messagelog/ में सेव हो जाएंगे. किसी फ़ाइल के लिए, पूर्ण पाथ को bin_setenv_data_dir से प्राथमिकता दी जाती है.

    ध्यान दें कि आपको प्रॉपर्टी को conf/message-logging.properties+log.root.dir के तौर पर रेफ़र करना होगा, क्योंकि यह डिफ़ॉल्ट रूप से टिप्पणी के तौर पर दिखती है. ज़्यादा जानकारी के लिए, ऐसा टोकन सेट करना जिस पर फ़िलहाल टिप्पणी की गई है देखें.

अगर आपको लॉग फ़ाइलों को फ़्लैट फ़ाइल स्ट्रक्चर में स्टोर करना है, ताकि सभी लॉग फ़ाइलें एक ही डायरेक्ट्री में डाली जा सकें, तो message-logging.properties फ़ाइल में conf/message-logging.properties+enable.flat.directory.structure को 'सही' पर सेट करें. मैसेज, ऊपर दी गई प्रॉपर्टी के हिसाब से तय की गई डायरेक्ट्री में सेव किए जाते हैं. साथ ही, फ़ाइल के नाम {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename} के तौर पर सेव होते हैं.

इन प्रॉपर्टी को सेट करने के लिए:

  1. message-processor.properties फ़ाइल को किसी एडिटर में खोलें. अगर फ़ाइल मौजूद नहीं है, तो उसे बनाएं:
    > vi /opt/apigee/customer/application/message-processor.properties
  2. प्रॉपर्टी को अपनी पसंद के मुताबिक सेट करें:
    conf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages
  3. बदलावों को सेव करें.
  4. पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक 'apigee' उपयोगकर्ता के पास हो:
    > chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Edge कॉम्पोनेंट को रीस्टार्ट करें:
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Edge for Private Cloud 4.15.07 और उससे पहले के वर्शन

डिफ़ॉल्ट रूप से, मैसेज प्रोसेसर पर मैसेज लॉग यहां मौजूद होते हैं:

/opt/apigee4/var/log/apigee/message-processor/messagelog/{org}/{environment}/{api_proxy_name}/{revision}/{logging_policy_name}/

मैसेज प्रोसेसर पर मौजूद, message-logging.properties फ़ाइल में इन प्रॉपर्टी में बदलाव करके, लॉग की डिफ़ॉल्ट जगह बदली जा सकती है:

  • data.dir - लॉग फ़ाइल के स्टोरेज के लिए रूट पाथ सेट करता है. उदाहरण के लिए, data.dir=/opt/apigee4/var/log
  • log.root.dir - अगर इसे किसी रिलेटिव पाथ पर सेट किया जाता है, जैसे कि log.root.dir=custom/folder/, तो पाथ को data.dir की जगह पर जोड़ दिया जाता है.

उदाहरण के लिए, इन दोनों प्रॉपर्टी के कॉम्बिनेशन से, लॉगिंग डायरेक्ट्री को /opt/apigee4/var/log/custom/folder/messagelog/ पर सेट किया जाएगा. ध्यान दें कि /messagelog अपने-आप जुड़ जाता है.

अगर इसे किसी खास पाथ पर सेट किया जाता है, जैसे कि log.root.dir=/opt/apigee4/var/log/messages, तो मैसेज लॉग /opt/apigee4/var/log/messages/messagelog/ में सेव हो जाएंगे. log.root.dir में मौजूद पूर्ण पाथ को data.dir पर प्राथमिकता दी जाती है.

अगर आपको लॉग फ़ाइलों को फ़्लैट फ़ाइल स्ट्रक्चर में सेव करना है, ताकि सभी लॉग फ़ाइलें एक ही डायरेक्ट्री में सेव की जा सकें, तो मैसेज प्रोसेसर पर message-logging.properties फ़ाइल में enable.flat.directory.structure property को 'सही' पर सेट करें. मैसेज, ऊपर दी गई प्रॉपर्टी से तय की गई डायरेक्ट्री में सेव किए जाते हैं. साथ ही, फ़ाइल के नाम {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename} के फ़ॉर्मैट में होते हैं.

मैसेज टेंप्लेट में वैरिएबल के लिए डिफ़ॉल्ट वैल्यू

मैसेज टेंप्लेट में हर वैरिएबल के लिए, डिफ़ॉल्ट वैल्यू अलग-अलग सेट की जा सकती हैं. उदाहरण के लिए, अगर वैरिएबल request.header.id को हल नहीं किया जा सकता, तो उसकी वैल्यू को वैल्यू unknown से बदल दिया जाता है.

<Message>This is a test message. id = {request.header.id:unknown}</Message>

Message एलिमेंट पर defaultVariableValue एट्रिब्यूट सेट करके, उन सभी वैरिएबल के लिए एक सामान्य डिफ़ॉल्ट वैल्यू तय की जा सकती है जिन्हें हल नहीं किया गया है:

<Message defaultVariableValue="unknown">This is a test message. id = {request.header.id}</Message>

तीसरे पक्ष की लॉग मैनेजमेंट सेवाओं को कॉन्फ़िगर करना

MessageLogging की नीति की मदद से, तीसरे पक्ष की लॉग मैनेजमेंट सेवाओं, जैसे कि Splunk, Sumo Logic, और Loggly को सिस्प्ले लॉग मैसेज भेजे जा सकते हैं. अगर आपको उनमें से किसी सेवा पर syslog भेजना है, तो सेवा के होस्ट, पोर्ट, और प्रोटोकॉल को कॉन्फ़िगर करने के लिए, उस सेवा का दस्तावेज़ देखें. इसके बाद, इस नीति के हिसाब से Syslog एलिमेंट सेट करें.

तीसरे पक्ष के लॉग मैनेजमेंट कॉन्फ़िगरेशन के लिए, यहां दिए गए दस्तावेज़ देखें:

गड़बड़ी का रेफ़रंस

इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, इन गड़बड़ियों के वैरिएबल के बारे में भी बताया गया है, जो Edge की मदद से सेट किए जाते हैं. यह जानकारी जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करता है. ज़्यादा जानने के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों और हैंडलिंग के बारे में जानकारी गलतियां.

रनटाइम की गड़बड़ियां

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी कोड एचटीटीपी कोड स्थिति वजह
steps.messagelogging.StepDefinitionExecutionFailed 500 गड़बड़ी वाली स्ट्रिंग देखें.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाली प्रॉक्सी को डिप्लॉय किया जाता है.

गड़बड़ी का नाम वजह ठीक करें
InvalidProtocol इस गड़बड़ी की वजह से, MessageLogging नीति को लागू नहीं किया जा सकता, अगर प्रोटोकॉल <Protocol> एलिमेंट में बताया गया, मान्य नहीं है. मान्य प्रोटोकॉल, टीसीपी और यूडीपी हैं. TLS/एसएसएल पर syslog मैसेज भेजने के लिए, सिर्फ़ टीसीपी का इस्तेमाल किया जा सकता है.
InvalidPort इस गड़बड़ी की वजह से हो सकता है कि MessageLogging नीति को लागू न करें: पोर्ट नंबर को <Port> एलिमेंट में नहीं बताया गया है या वह मान्य नहीं है. पोर्ट नंबर शून्य से बड़ा पूर्णांक.

गड़बड़ी के वैरिएबल

रनटाइम की गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों के बारे में जानकारी.

वैरिएबल कहां उदाहरण
fault.name="fault_name" fault_name गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम में गड़बड़ियां टेबल में बताया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. fault.name Matches "StepDefinitionExecutionFailed"
messagelogging.policy_name.failed policy_name, उपयोगकर्ता की ओर से बताया गया उस नीति का नाम है जिसमें गड़बड़ी हुई है. messagelogging.ML-LogMessages.failed = true

गड़बड़ी के रिस्पॉन्स का उदाहरण

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed"
      },
      "faultstring":"Execution failed"
   }
}

गड़बड़ी के नियम का उदाहरण

<FaultRule name="MessageLogging">
    <Step>
        <Name>ML-LogMessages</Name>
        <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition>
    </Step>
    <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition>
</FaultRule>


फ़्लो वैरिएबल

नीति के लागू न होने पर, ये वैरिएबल अपने-आप पॉप्युलेट हो जाते हैं.

  • messagelogging.failed
  • messagelogging.{stepdefinition-name}.failed

मिलते-जुलते विषय