<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one or more<a name="line.2"></a>
<span class="sourceLineNo">003</span> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a>
<span class="sourceLineNo">004</span> * this work for additional information regarding copyright ownership.<a name="line.4"></a>
<span class="sourceLineNo">005</span> * The ASF licenses this file to You under the Apache license, Version 2.0<a name="line.5"></a>
<span class="sourceLineNo">006</span> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a>
<span class="sourceLineNo">007</span> * the License. You may obtain a copy of the License at<a name="line.7"></a>
<span class="sourceLineNo">008</span> *<a name="line.8"></a>
<span class="sourceLineNo">009</span> *      http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a>
<span class="sourceLineNo">010</span> *<a name="line.10"></a>
<span class="sourceLineNo">011</span> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a>
<span class="sourceLineNo">012</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a>
<span class="sourceLineNo">013</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a>
<span class="sourceLineNo">014</span> * See the license for the specific language governing permissions and<a name="line.14"></a>
<span class="sourceLineNo">015</span> * limitations under the license.<a name="line.15"></a>
<span class="sourceLineNo">016</span> */<a name="line.16"></a>
<span class="sourceLineNo">017</span>package org.apache.logging.log4j.core.appender;<a name="line.17"></a>
<span class="sourceLineNo">018</span><a name="line.18"></a>
<span class="sourceLineNo">019</span>import java.io.Writer;<a name="line.19"></a>
<span class="sourceLineNo">020</span><a name="line.20"></a>
<span class="sourceLineNo">021</span>import org.apache.logging.log4j.core.Appender;<a name="line.21"></a>
<span class="sourceLineNo">022</span>import org.apache.logging.log4j.core.Core;<a name="line.22"></a>
<span class="sourceLineNo">023</span>import org.apache.logging.log4j.core.Filter;<a name="line.23"></a>
<span class="sourceLineNo">024</span>import org.apache.logging.log4j.core.StringLayout;<a name="line.24"></a>
<span class="sourceLineNo">025</span>import org.apache.logging.log4j.core.config.Property;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import org.apache.logging.log4j.core.config.plugins.Plugin;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import org.apache.logging.log4j.core.config.plugins.PluginFactory;<a name="line.28"></a>
<span class="sourceLineNo">029</span>import org.apache.logging.log4j.core.layout.PatternLayout;<a name="line.29"></a>
<span class="sourceLineNo">030</span>import org.apache.logging.log4j.core.util.CloseShieldWriter;<a name="line.30"></a>
<span class="sourceLineNo">031</span><a name="line.31"></a>
<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
<span class="sourceLineNo">033</span> * Appends log events to a {@link Writer}.<a name="line.33"></a>
<span class="sourceLineNo">034</span> */<a name="line.34"></a>
<span class="sourceLineNo">035</span>@Plugin(name = "Writer", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE, printObject = true)<a name="line.35"></a>
<span class="sourceLineNo">036</span>public final class WriterAppender extends AbstractWriterAppender&lt;WriterManager&gt; {<a name="line.36"></a>
<span class="sourceLineNo">037</span><a name="line.37"></a>
<span class="sourceLineNo">038</span>    /**<a name="line.38"></a>
<span class="sourceLineNo">039</span>     * Builds WriterAppender instances.<a name="line.39"></a>
<span class="sourceLineNo">040</span>     */<a name="line.40"></a>
<span class="sourceLineNo">041</span>    public static class Builder&lt;B extends Builder&lt;B&gt;&gt; extends AbstractAppender.Builder&lt;B&gt;<a name="line.41"></a>
<span class="sourceLineNo">042</span>            implements org.apache.logging.log4j.core.util.Builder&lt;WriterAppender&gt; {<a name="line.42"></a>
<span class="sourceLineNo">043</span><a name="line.43"></a>
<span class="sourceLineNo">044</span>        private boolean follow = false;<a name="line.44"></a>
<span class="sourceLineNo">045</span><a name="line.45"></a>
<span class="sourceLineNo">046</span>        private Writer target;<a name="line.46"></a>
<span class="sourceLineNo">047</span><a name="line.47"></a>
<span class="sourceLineNo">048</span>        @Override<a name="line.48"></a>
<span class="sourceLineNo">049</span>        public WriterAppender build() {<a name="line.49"></a>
<span class="sourceLineNo">050</span>            final StringLayout layout = (StringLayout) getLayout();<a name="line.50"></a>
<span class="sourceLineNo">051</span>            final StringLayout actualLayout = layout != null ? layout : PatternLayout.createDefaultLayout();<a name="line.51"></a>
<span class="sourceLineNo">052</span>            return new WriterAppender(getName(), actualLayout, getFilter(), getManager(target, follow, actualLayout),<a name="line.52"></a>
<span class="sourceLineNo">053</span>                    isIgnoreExceptions(), getPropertyArray());<a name="line.53"></a>
<span class="sourceLineNo">054</span>        }<a name="line.54"></a>
<span class="sourceLineNo">055</span><a name="line.55"></a>
<span class="sourceLineNo">056</span>        public B setFollow(final boolean shouldFollow) {<a name="line.56"></a>
<span class="sourceLineNo">057</span>            this.follow = shouldFollow;<a name="line.57"></a>
<span class="sourceLineNo">058</span>            return asBuilder();<a name="line.58"></a>
<span class="sourceLineNo">059</span>        }<a name="line.59"></a>
<span class="sourceLineNo">060</span><a name="line.60"></a>
<span class="sourceLineNo">061</span>        public B setTarget(final Writer aTarget) {<a name="line.61"></a>
<span class="sourceLineNo">062</span>            this.target = aTarget;<a name="line.62"></a>
<span class="sourceLineNo">063</span>            return asBuilder();<a name="line.63"></a>
<span class="sourceLineNo">064</span>        }<a name="line.64"></a>
<span class="sourceLineNo">065</span>    }<a name="line.65"></a>
<span class="sourceLineNo">066</span>    /**<a name="line.66"></a>
<span class="sourceLineNo">067</span>     * Holds data to pass to factory method.<a name="line.67"></a>
<span class="sourceLineNo">068</span>     */<a name="line.68"></a>
<span class="sourceLineNo">069</span>    private static class FactoryData {<a name="line.69"></a>
<span class="sourceLineNo">070</span>        private final StringLayout layout;<a name="line.70"></a>
<span class="sourceLineNo">071</span>        private final String name;<a name="line.71"></a>
<span class="sourceLineNo">072</span>        private final Writer writer;<a name="line.72"></a>
<span class="sourceLineNo">073</span><a name="line.73"></a>
<span class="sourceLineNo">074</span>        /**<a name="line.74"></a>
<span class="sourceLineNo">075</span>         * Builds instances.<a name="line.75"></a>
<span class="sourceLineNo">076</span>         *<a name="line.76"></a>
<span class="sourceLineNo">077</span>         * @param writer<a name="line.77"></a>
<span class="sourceLineNo">078</span>         *            The OutputStream.<a name="line.78"></a>
<span class="sourceLineNo">079</span>         * @param type<a name="line.79"></a>
<span class="sourceLineNo">080</span>         *            The name of the target.<a name="line.80"></a>
<span class="sourceLineNo">081</span>         * @param layout<a name="line.81"></a>
<span class="sourceLineNo">082</span>         *            A String layout<a name="line.82"></a>
<span class="sourceLineNo">083</span>         */<a name="line.83"></a>
<span class="sourceLineNo">084</span>        public FactoryData(final Writer writer, final String type, final StringLayout layout) {<a name="line.84"></a>
<span class="sourceLineNo">085</span>            this.writer = writer;<a name="line.85"></a>
<span class="sourceLineNo">086</span>            this.name = type;<a name="line.86"></a>
<span class="sourceLineNo">087</span>            this.layout = layout;<a name="line.87"></a>
<span class="sourceLineNo">088</span>        }<a name="line.88"></a>
<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
<span class="sourceLineNo">090</span><a name="line.90"></a>
<span class="sourceLineNo">091</span>    private static class WriterManagerFactory implements ManagerFactory&lt;WriterManager, FactoryData&gt; {<a name="line.91"></a>
<span class="sourceLineNo">092</span><a name="line.92"></a>
<span class="sourceLineNo">093</span>        /**<a name="line.93"></a>
<span class="sourceLineNo">094</span>         * Creates a WriterManager.<a name="line.94"></a>
<span class="sourceLineNo">095</span>         *<a name="line.95"></a>
<span class="sourceLineNo">096</span>         * @param name<a name="line.96"></a>
<span class="sourceLineNo">097</span>         *            The name of the entity to manage.<a name="line.97"></a>
<span class="sourceLineNo">098</span>         * @param data<a name="line.98"></a>
<span class="sourceLineNo">099</span>         *            The data required to create the entity.<a name="line.99"></a>
<span class="sourceLineNo">100</span>         * @return The WriterManager<a name="line.100"></a>
<span class="sourceLineNo">101</span>         */<a name="line.101"></a>
<span class="sourceLineNo">102</span>        @Override<a name="line.102"></a>
<span class="sourceLineNo">103</span>        public WriterManager createManager(final String name, final FactoryData data) {<a name="line.103"></a>
<span class="sourceLineNo">104</span>            return new WriterManager(data.writer, data.name, data.layout, true);<a name="line.104"></a>
<span class="sourceLineNo">105</span>        }<a name="line.105"></a>
<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
<span class="sourceLineNo">107</span><a name="line.107"></a>
<span class="sourceLineNo">108</span>    private static WriterManagerFactory factory = new WriterManagerFactory();<a name="line.108"></a>
<span class="sourceLineNo">109</span><a name="line.109"></a>
<span class="sourceLineNo">110</span>    /**<a name="line.110"></a>
<span class="sourceLineNo">111</span>     * Creates a WriterAppender.<a name="line.111"></a>
<span class="sourceLineNo">112</span>     *<a name="line.112"></a>
<span class="sourceLineNo">113</span>     * @param layout<a name="line.113"></a>
<span class="sourceLineNo">114</span>     *            The layout to use or null to get the default layout.<a name="line.114"></a>
<span class="sourceLineNo">115</span>     * @param filter<a name="line.115"></a>
<span class="sourceLineNo">116</span>     *            The Filter or null.<a name="line.116"></a>
<span class="sourceLineNo">117</span>     * @param target<a name="line.117"></a>
<span class="sourceLineNo">118</span>     *            The target Writer<a name="line.118"></a>
<span class="sourceLineNo">119</span>     * @param follow<a name="line.119"></a>
<span class="sourceLineNo">120</span>     *            If true will follow changes to the underlying output stream.<a name="line.120"></a>
<span class="sourceLineNo">121</span>     *            Use false as the default.<a name="line.121"></a>
<span class="sourceLineNo">122</span>     * @param name<a name="line.122"></a>
<span class="sourceLineNo">123</span>     *            The name of the Appender (required).<a name="line.123"></a>
<span class="sourceLineNo">124</span>     * @param ignore<a name="line.124"></a>
<span class="sourceLineNo">125</span>     *            If {@code "true"} (default) exceptions encountered when<a name="line.125"></a>
<span class="sourceLineNo">126</span>     *            appending events are logged; otherwise they are propagated to<a name="line.126"></a>
<span class="sourceLineNo">127</span>     *            the caller. Use true as the default.<a name="line.127"></a>
<span class="sourceLineNo">128</span>     * @return The ConsoleAppender.<a name="line.128"></a>
<span class="sourceLineNo">129</span>     */<a name="line.129"></a>
<span class="sourceLineNo">130</span>    @PluginFactory<a name="line.130"></a>
<span class="sourceLineNo">131</span>    public static WriterAppender createAppender(StringLayout layout, final Filter filter, final Writer target,<a name="line.131"></a>
<span class="sourceLineNo">132</span>            final String name, final boolean follow, final boolean ignore) {<a name="line.132"></a>
<span class="sourceLineNo">133</span>        if (name == null) {<a name="line.133"></a>
<span class="sourceLineNo">134</span>            LOGGER.error("No name provided for WriterAppender");<a name="line.134"></a>
<span class="sourceLineNo">135</span>            return null;<a name="line.135"></a>
<span class="sourceLineNo">136</span>        }<a name="line.136"></a>
<span class="sourceLineNo">137</span>        if (layout == null) {<a name="line.137"></a>
<span class="sourceLineNo">138</span>            layout = PatternLayout.createDefaultLayout();<a name="line.138"></a>
<span class="sourceLineNo">139</span>        }<a name="line.139"></a>
<span class="sourceLineNo">140</span>        return new WriterAppender(name, layout, filter, getManager(target, follow, layout), ignore, null);<a name="line.140"></a>
<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
<span class="sourceLineNo">142</span><a name="line.142"></a>
<span class="sourceLineNo">143</span>    private static WriterManager getManager(final Writer target, final boolean follow, final StringLayout layout) {<a name="line.143"></a>
<span class="sourceLineNo">144</span>        final Writer writer = new CloseShieldWriter(target);<a name="line.144"></a>
<span class="sourceLineNo">145</span>        final String managerName = target.getClass().getName() + "@" + Integer.toHexString(target.hashCode()) + '.'<a name="line.145"></a>
<span class="sourceLineNo">146</span>                + follow;<a name="line.146"></a>
<span class="sourceLineNo">147</span>        return WriterManager.getManager(managerName, new FactoryData(writer, managerName, layout), factory);<a name="line.147"></a>
<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
<span class="sourceLineNo">149</span><a name="line.149"></a>
<span class="sourceLineNo">150</span>    @PluginBuilderFactory<a name="line.150"></a>
<span class="sourceLineNo">151</span>    public static &lt;B extends Builder&lt;B&gt;&gt; B newBuilder() {<a name="line.151"></a>
<span class="sourceLineNo">152</span>        return new Builder&lt;B&gt;().asBuilder();<a name="line.152"></a>
<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
<span class="sourceLineNo">154</span><a name="line.154"></a>
<span class="sourceLineNo">155</span>    private WriterAppender(final String name, final StringLayout layout, final Filter filter,<a name="line.155"></a>
<span class="sourceLineNo">156</span>            final WriterManager manager, final boolean ignoreExceptions, final Property[] properties) {<a name="line.156"></a>
<span class="sourceLineNo">157</span>        super(name, layout, filter, ignoreExceptions, true, properties, manager);<a name="line.157"></a>
<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
<span class="sourceLineNo">159</span><a name="line.159"></a>
<span class="sourceLineNo">160</span>}<a name="line.160"></a>




























































</pre>
</div>
</body>
</html>
