Elixir 1.7

Logger.Formatter




elixir

Logger.Formatter

लॉग के लिए डेटा फ़ॉर्मेट करने की सुविधा।

यह मॉड्यूल डेवलपर्स को एक स्ट्रिंग निर्दिष्ट करने की अनुमति देता है जो लॉग संदेश के लिए टेम्पलेट के रूप में कार्य करता है, उदाहरण के लिए:

$time $metadata[$level] $message\n

त्रुटि संदेशों को इस प्रकार प्रिंट करेगा:

18:43:12.439 user_id=13 [error] Hello\n

मान्य पैरामीटर जिनका आप उपयोग कर सकते हैं:

  • $time - उस समय जब लॉग संदेश भेजा गया था
  • $date - लॉग संदेश भेजने की तारीख
  • $message - लॉग संदेश
  • $level - लॉग स्तर
  • $node - वह नोड जो संदेश को प्रिंट करता है
  • $metadata - उपयोगकर्ता नियंत्रित डेटा "key=val key2=val2 " प्रारूप में प्रस्तुत किया गया है
  • $levelpad - एक एकल स्थान पर सेट होता है यदि स्तर 4 वर्ण लंबा है, अन्यथा खाली स्थान पर सेट किया गया है। स्तर के बाद संदेश को संरेखित करने के लिए उपयोग किया जाता है।

बैकएंड आमतौर पर डेवलपर्स को कॉन्फ़िगरेशन फ़ाइलों के माध्यम से इस तरह के नियंत्रण तार की आपूर्ति करने की अनुमति देते हैं। यह मॉड्यूल compile/1 प्रदान करता है, जो स्ट्रिंग को रनटाइम पर तेज संचालन के लिए प्रारूप में संकलित करता है और format/5 को वास्तविक IO डेटा में संकलित पैटर्न को प्रारूपित करता है।

मेटाडाटा

Logger.metadata/0 को भेजी जाने वाली मेटाडाटा को लकड़हारा.मातादता Logger.metadata/0 और Logger.metadata/1 कार्यों के साथ पढ़ा और लिखा जा सकता है। उदाहरण के लिए, आप मौजूदा प्रक्रिया में user_id मेटाडेटा को जोड़ने के लिए Logger.metadata([user_id: 13]) सेट कर सकते हैं। उपयोगकर्ता बैकेंड को कॉन्फ़िगर करने के लिए चुन सकता है कि वह कौन सा मेटाडेटा प्रिंट करना चाहता है और यह $metadata मान को बदल देगा।

सारांश

प्रकार

pattern()
time()

कार्य

compile/1

एक डेटा संरचना में एक प्रारूप स्ट्रिंग संकलित करता है जो format/5 को संभाल सकता है

format/5

एक संकलित प्रारूप लेता है और स्तर, टाइमस्टैम्प, संदेश और मेटाडेटा कीवर्ड सूची इंजेक्ट करता है और एक उचित स्वरूपित स्ट्रिंग लौटाता है

format_date(arg)

प्रारूप दिनांक के रूप में चारदत्त

format_time(arg)

प्रारूपता के रूप में समय

prune(binary)

गैर-मान्य UTF-8 कोडपॉइंट्स को Prunes

प्रकार

पैटर्न ()

pattern() :: :date | :level | :levelpad | :message | :metadata | :node | :time

पहर()

time() :: {{1970..10000, 1..12, 1..31}, {0..23, 0..59, 0..59, 0..999}}

कार्य

संकलन (पैटर्न)

compile(pattern) :: pattern when pattern: {module(), function :: atom()}
compile(binary() | nil) :: [pattern() | binary()]

एक डेटा संरचना में एक प्रारूप स्ट्रिंग संकलित करता है जो format/5 को संभाल सकता है।

मॉड्यूल में मान्य किए गए मान्य मापदंडों पर प्रलेखन के लिए मॉड्यूल डॉक्टर की जांच करें। यदि आप पैटर्न के रूप में nil पास करते हैं, तो पैटर्न निम्न के लिए चूक जाता है:

"\n$time $metadata[$level] $levelpad$message\n"

यदि आप कस्टम फ़ॉर्मेटर के माध्यम से फ़ॉर्मेटिंग को अनुकूलित करना चाहते हैं, तो आप pattern रूप में एक {module, function} टपल को पास कर सकते हैं।

iex> Logger.Formatter.compile("$time $metadata [$level] $message\n")
[:time, " ", :metadata, " [", :level, "] ", :message, "\n"]

iex> Logger.Formatter.compile({MyLoggerFormatter, :format})
{MyLoggerFormatter, :format}

प्रारूप (विन्यास, स्तर, संदेश, टाइमस्टैम्प, मेटाडेटा)

format(
  {atom(), atom()} | [pattern() | binary()],
  Logger.level(),
  Logger.message(),
  time(),
  keyword()
) :: IO.chardata()

एक संकलित प्रारूप लेता है और स्तर, टाइमस्टैम्प, संदेश और मेटाडेटा कीवर्ड सूची इंजेक्ट करता है और एक उचित स्वरूपित स्ट्रिंग देता है।

उदाहरण

iex> pattern = Logger.Formatter.compile("[$level] $message")
iex> timestamp = {{1977, 01, 28}, {13, 29, 00, 000}}
iex> formatted = Logger.Formatter.format(pattern, :info, "hello", timestamp, [])
iex> IO.chardata_to_string(formatted)
"[info] hello"

format_date (आर्ग)

format_date({1970..10000, 1..12, 1..31}) :: IO.chardata()

प्रारूप दिनांक के रूप में चारदत्त।

format_time (आर्ग)

format_time({0..23, 0..59, 0..59, 0..999}) :: IO.chardata()

प्रारूपता के रूप में समय।

छाँटना (बाइनरी)

prune(IO.chardata()) :: IO.chardata()

गैर-मान्य UTF-8 कोडपॉइंट्स को Prunes।

आमतौर पर फॉर्मेटिंग के बाद कहा जाता है जब डेटा प्रिंट नहीं किया जा सकता है।