<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>AbstractLoggerAdapter xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/logging/log4j/spi/AbstractLoggerAdapter.html">View Javadoc</a></div><pre>
<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</em>
<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> * contributor license agreements. See the NOTICE file distributed with</em>
<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * this work for additional information regarding copyright ownership.</em>
<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> * The ASF licenses this file to You under the Apache license, Version 2.0</em>
<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * (the "License"); you may not use this file except in compliance with</em>
<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * the License. You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> *      <a href="http://www.apache.org/licenses/LICENSE-2." target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.</a>0</em>
<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * See the license for the specific language governing permissions and</em>
<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> * limitations under the license.</em>
<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <strong class="jxr_keyword">package</strong> org.apache.logging.log4j.spi;
<a class="jxr_linenumber" name="L18" href="#L18">18</a>  
<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> java.util.WeakHashMap;
<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ConcurrentHashMap;
<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ConcurrentMap;
<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.locks.ReadWriteLock;
<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.locks.ReentrantReadWriteLock;
<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.logging.log4j.LogManager;
<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.logging.log4j.util.LoaderUtil;
<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> * Provides an abstract base class to use for implementing LoggerAdapter.</em>
<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment"> * </em>
<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <em class="jxr_javadoccomment"> * @param &lt;L&gt; the Logger class to adapt</em>
<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment"> * @since 2.1</em>
<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> AbstractLoggerAdapter&lt;L&gt; <strong class="jxr_keyword">implements</strong> LoggerAdapter&lt;L&gt;, <a href="../../../../../org/apache/logging/log4j/spi/LoggerContextShutdownAware.html">LoggerContextShutdownAware</a> {
<a class="jxr_linenumber" name="L38" href="#L38">38</a>  
<a class="jxr_linenumber" name="L39" href="#L39">39</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">     * A map to store loggers for their given LoggerContexts.</em>
<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> Map&lt;LoggerContext, ConcurrentMap&lt;String, L&gt;&gt; registry = <strong class="jxr_keyword">new</strong> ConcurrentHashMap&lt;&gt;();
<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> ReadWriteLock lock = <strong class="jxr_keyword">new</strong> ReentrantReadWriteLock (<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="L45" href="#L45">45</a>  
<a class="jxr_linenumber" name="L46" href="#L46">46</a>      @Override
<a class="jxr_linenumber" name="L47" href="#L47">47</a>      <strong class="jxr_keyword">public</strong> L getLogger(<strong class="jxr_keyword">final</strong> String name) {
<a class="jxr_linenumber" name="L48" href="#L48">48</a>          <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/logging/log4j/spi/LoggerContext.html">LoggerContext</a> context = getContext();
<a class="jxr_linenumber" name="L49" href="#L49">49</a>          <strong class="jxr_keyword">final</strong> ConcurrentMap&lt;String, L&gt; loggers = getLoggersInContext(context);
<a class="jxr_linenumber" name="L50" href="#L50">50</a>          <strong class="jxr_keyword">final</strong> L logger = loggers.get(name);
<a class="jxr_linenumber" name="L51" href="#L51">51</a>          <strong class="jxr_keyword">if</strong> (logger != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L52" href="#L52">52</a>              <strong class="jxr_keyword">return</strong> logger;
<a class="jxr_linenumber" name="L53" href="#L53">53</a>          }
<a class="jxr_linenumber" name="L54" href="#L54">54</a>          loggers.putIfAbsent(name, newLogger(name, context));
<a class="jxr_linenumber" name="L55" href="#L55">55</a>          <strong class="jxr_keyword">return</strong> loggers.get(name);
<a class="jxr_linenumber" name="L56" href="#L56">56</a>      }
<a class="jxr_linenumber" name="L57" href="#L57">57</a>  
<a class="jxr_linenumber" name="L58" href="#L58">58</a>      @Override
<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> contextShutdown(<a href="../../../../../org/apache/logging/log4j/spi/LoggerContext.html">LoggerContext</a> loggerContext) {
<a class="jxr_linenumber" name="L60" href="#L60">60</a>          registry.remove(loggerContext);
<a class="jxr_linenumber" name="L61" href="#L61">61</a>      }
<a class="jxr_linenumber" name="L62" href="#L62">62</a>  
<a class="jxr_linenumber" name="L63" href="#L63">63</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L64" href="#L64">64</a>  <em class="jxr_javadoccomment">     * Gets or creates the ConcurrentMap of named loggers for a given LoggerContext.</em>
<a class="jxr_linenumber" name="L65" href="#L65">65</a>  <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="L66" href="#L66">66</a>  <em class="jxr_javadoccomment">     * @param context the LoggerContext to get loggers for</em>
<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <em class="jxr_javadoccomment">     * @return the map of loggers for the given LoggerContext</em>
<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L69" href="#L69">69</a>      <strong class="jxr_keyword">public</strong> ConcurrentMap&lt;String, L&gt; getLoggersInContext(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/logging/log4j/spi/LoggerContext.html">LoggerContext</a> context) {
<a class="jxr_linenumber" name="L70" href="#L70">70</a>          ConcurrentMap&lt;String, L&gt; loggers;
<a class="jxr_linenumber" name="L71" href="#L71">71</a>          lock.readLock ().lock ();
<a class="jxr_linenumber" name="L72" href="#L72">72</a>          <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L73" href="#L73">73</a>              loggers = registry.get (context);
<a class="jxr_linenumber" name="L74" href="#L74">74</a>          } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="L75" href="#L75">75</a>              lock.readLock ().unlock ();
<a class="jxr_linenumber" name="L76" href="#L76">76</a>          }
<a class="jxr_linenumber" name="L77" href="#L77">77</a>  
<a class="jxr_linenumber" name="L78" href="#L78">78</a>          <strong class="jxr_keyword">if</strong> (loggers != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L79" href="#L79">79</a>              <strong class="jxr_keyword">return</strong> loggers;
<a class="jxr_linenumber" name="L80" href="#L80">80</a>          }
<a class="jxr_linenumber" name="L81" href="#L81">81</a>          lock.writeLock ().lock ();
<a class="jxr_linenumber" name="L82" href="#L82">82</a>          <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L83" href="#L83">83</a>              loggers = registry.get (context);
<a class="jxr_linenumber" name="L84" href="#L84">84</a>              <strong class="jxr_keyword">if</strong> (loggers == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L85" href="#L85">85</a>                  loggers = <strong class="jxr_keyword">new</strong> ConcurrentHashMap&lt;&gt; ();
<a class="jxr_linenumber" name="L86" href="#L86">86</a>                  registry.put (context, loggers);
<a class="jxr_linenumber" name="L87" href="#L87">87</a>                  <strong class="jxr_keyword">if</strong> (context instanceof LoggerContextShutdownEnabled) {
<a class="jxr_linenumber" name="L88" href="#L88">88</a>                      ((<a href="../../../../../org/apache/logging/log4j/spi/LoggerContextShutdownEnabled.html">LoggerContextShutdownEnabled</a>) context).addShutdownListener(<strong class="jxr_keyword">this</strong>);
<a class="jxr_linenumber" name="L89" href="#L89">89</a>                  }
<a class="jxr_linenumber" name="L90" href="#L90">90</a>              }
<a class="jxr_linenumber" name="L91" href="#L91">91</a>              <strong class="jxr_keyword">return</strong> loggers;
<a class="jxr_linenumber" name="L92" href="#L92">92</a>          } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="L93" href="#L93">93</a>              lock.writeLock ().unlock ();
<a class="jxr_linenumber" name="L94" href="#L94">94</a>          }
<a class="jxr_linenumber" name="L95" href="#L95">95</a>      }
<a class="jxr_linenumber" name="L96" href="#L96">96</a>  
<a class="jxr_linenumber" name="L97" href="#L97">97</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L98" href="#L98">98</a>  <em class="jxr_javadoccomment">     * For unit testing. Consider to be private.</em>
<a class="jxr_linenumber" name="L99" href="#L99">99</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L100" href="#L100">100</a>     <strong class="jxr_keyword">public</strong> Set&lt;LoggerContext&gt; getLoggerContexts() {
<a class="jxr_linenumber" name="L101" href="#L101">101</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> HashSet&lt;&gt;(registry.keySet());
<a class="jxr_linenumber" name="L102" href="#L102">102</a>     }
<a class="jxr_linenumber" name="L103" href="#L103">103</a> 
<a class="jxr_linenumber" name="L104" href="#L104">104</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L105" href="#L105">105</a> <em class="jxr_javadoccomment">     * Creates a new named logger for a given {@link LoggerContext}.</em>
<a class="jxr_linenumber" name="L106" href="#L106">106</a> <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="L107" href="#L107">107</a> <em class="jxr_javadoccomment">     * @param name the name of the logger to create</em>
<a class="jxr_linenumber" name="L108" href="#L108">108</a> <em class="jxr_javadoccomment">     * @param context the LoggerContext this logger will be associated with</em>
<a class="jxr_linenumber" name="L109" href="#L109">109</a> <em class="jxr_javadoccomment">     * @return the new named logger</em>
<a class="jxr_linenumber" name="L110" href="#L110">110</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L111" href="#L111">111</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">abstract</strong> L newLogger(<strong class="jxr_keyword">final</strong> String name, <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/logging/log4j/spi/LoggerContext.html">LoggerContext</a> context);
<a class="jxr_linenumber" name="L112" href="#L112">112</a> 
<a class="jxr_linenumber" name="L113" href="#L113">113</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L114" href="#L114">114</a> <em class="jxr_javadoccomment">     * Gets the {@link LoggerContext} that should be used to look up or create loggers. This is similar in spirit to the</em>
<a class="jxr_linenumber" name="L115" href="#L115">115</a> <em class="jxr_javadoccomment">     * {@code ContextSelector} class in {@code log4j-core}. However, implementations can rely on their own framework's</em>
<a class="jxr_linenumber" name="L116" href="#L116">116</a> <em class="jxr_javadoccomment">     * separation of contexts instead (or simply use a singleton).</em>
<a class="jxr_linenumber" name="L117" href="#L117">117</a> <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="L118" href="#L118">118</a> <em class="jxr_javadoccomment">     * @return the LoggerContext to be used for lookup and creation purposes</em>
<a class="jxr_linenumber" name="L119" href="#L119">119</a> <em class="jxr_javadoccomment">     * @see org.apache.logging.log4j.LogManager#getContext(ClassLoader, boolean)</em>
<a class="jxr_linenumber" name="L120" href="#L120">120</a> <em class="jxr_javadoccomment">     * @see org.apache.logging.log4j.LogManager#getContext(String, boolean)</em>
<a class="jxr_linenumber" name="L121" href="#L121">121</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L122" href="#L122">122</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">abstract</strong> <a href="../../../../../org/apache/logging/log4j/spi/LoggerContext.html">LoggerContext</a> getContext();
<a class="jxr_linenumber" name="L123" href="#L123">123</a> 
<a class="jxr_linenumber" name="L124" href="#L124">124</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L125" href="#L125">125</a> <em class="jxr_javadoccomment">     * Gets the {@link LoggerContext} associated with the given caller class.</em>
<a class="jxr_linenumber" name="L126" href="#L126">126</a> <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="L127" href="#L127">127</a> <em class="jxr_javadoccomment">     * @param callerClass the caller class</em>
<a class="jxr_linenumber" name="L128" href="#L128">128</a> <em class="jxr_javadoccomment">     * @return the LoggerContext for the calling class</em>
<a class="jxr_linenumber" name="L129" href="#L129">129</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="L130" href="#L130">130</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../org/apache/logging/log4j/spi/LoggerContext.html">LoggerContext</a> getContext(<strong class="jxr_keyword">final</strong> Class&lt;?&gt; callerClass) {
<a class="jxr_linenumber" name="L131" href="#L131">131</a>         ClassLoader cl = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L132" href="#L132">132</a>         <strong class="jxr_keyword">if</strong> (callerClass != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L133" href="#L133">133</a>             cl = callerClass.getClassLoader();
<a class="jxr_linenumber" name="L134" href="#L134">134</a>         }
<a class="jxr_linenumber" name="L135" href="#L135">135</a>         <strong class="jxr_keyword">if</strong> (cl == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="L136" href="#L136">136</a>             cl = LoaderUtil.getThreadContextClassLoader();
<a class="jxr_linenumber" name="L137" href="#L137">137</a>         }
<a class="jxr_linenumber" name="L138" href="#L138">138</a>         <strong class="jxr_keyword">return</strong> LogManager.getContext(cl, false);
<a class="jxr_linenumber" name="L139" href="#L139">139</a>     }
<a class="jxr_linenumber" name="L140" href="#L140">140</a> 
<a class="jxr_linenumber" name="L141" href="#L141">141</a>     @Override
<a class="jxr_linenumber" name="L142" href="#L142">142</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() {
<a class="jxr_linenumber" name="L143" href="#L143">143</a>         lock.writeLock ().lock ();
<a class="jxr_linenumber" name="L144" href="#L144">144</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="L145" href="#L145">145</a>             registry.clear();
<a class="jxr_linenumber" name="L146" href="#L146">146</a>         } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="L147" href="#L147">147</a>             lock.writeLock ().unlock ();
<a class="jxr_linenumber" name="L148" href="#L148">148</a>         }
<a class="jxr_linenumber" name="L149" href="#L149">149</a>     }
<a class="jxr_linenumber" name="L150" href="#L150">150</a> }
</pre>
<hr/>
<div id="footer">Copyright &#169; 1999&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</div>
</body>
</html>
