View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.logging.log4j.io.internal;
19  
20  import java.io.IOException;
21  import java.io.OutputStream;
22  import java.io.PrintStream;
23  import java.io.UnsupportedEncodingException;
24  import java.nio.charset.Charset;
25  import java.util.Locale;
26  
27  import org.apache.logging.log4j.Level;
28  import org.apache.logging.log4j.Marker;
29  import org.apache.logging.log4j.spi.ExtendedLogger;
30  
31  /**
32   * Internal class used primarily to allow location calculations to work properly.
33   *
34   * @since 2.12
35   */
36  public class InternalPrintStream extends PrintStream {
37  
38      public InternalPrintStream(final ExtendedLogger logger, final boolean autoFlush, final Charset charset,
39                                  final String fqcn, final Level level, final Marker marker)
40          throws UnsupportedEncodingException {
41          super(new InternalOutputStream(logger, level, marker, ensureNonNull(charset), fqcn),
42              autoFlush, ensureNonNull(charset).name());
43      }
44  
45      public InternalPrintStream(final OutputStream out, final boolean autoFlush, final Charset charset,
46                                  final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker)
47          throws UnsupportedEncodingException {
48          super(new InternalFilterOutputStream(out, ensureNonNull(charset), logger, fqcn, level,
49              marker), autoFlush, ensureNonNull(charset).name());
50      }
51  
52      private static Charset ensureNonNull(final Charset charset) {
53          return charset == null ? Charset.defaultCharset() : charset;
54      }
55  
56      @Override
57      public InternalPrintStream append(final char c) {
58          super.append(c);
59          return this;
60      }
61  
62      @Override
63      public InternalPrintStream append(final CharSequence csq) {
64          super.append(csq);
65          return this;
66      }
67  
68      @Override
69      public InternalPrintStream append(final CharSequence csq, final int start, final int end) {
70          super.append(csq, start, end);
71          return this;
72      }
73  
74      @Override
75      public boolean checkError() {
76          return super.checkError();
77      }
78  
79      @Override
80      public void close() {
81          super.close();
82      }
83  
84      @Override
85      public void flush() {
86          super.flush();
87      }
88  
89      @Override
90      public InternalPrintStream format(final Locale l, final String format, final Object... args) {
91          super.format(l, format, args);
92          return this;
93      }
94  
95      @Override
96      public InternalPrintStream format(final String format, final Object... args) {
97          super.format(format, args);
98          return this;
99      }
100 
101     @Override
102     public void print(final boolean b) {
103         super.print(b);
104     }
105 
106     @Override
107     public void print(final char c) {
108         super.print(c);
109     }
110 
111     @Override
112     public void print(final char[] s) {
113         super.print(s);
114     }
115 
116     @Override
117     public void print(final double d) {
118         super.print(d);
119     }
120 
121     @Override
122     public void print(final float f) {
123         super.print(f);
124     }
125 
126     @Override
127     public void print(final int i) {
128         super.print(i);
129     }
130 
131     @Override
132     public void print(final long l) {
133         super.print(l);
134     }
135 
136     @Override
137     public void print(final Object obj) {
138         super.print(obj);
139     }
140 
141     @Override
142     public void print(final String s) {
143         super.print(s);
144     }
145 
146     @Override
147     public InternalPrintStream printf(final Locale l, final String format, final Object... args) {
148         super.printf(l, format, args);
149         return this;
150     }
151 
152     @Override
153     public InternalPrintStream printf(final String format, final Object... args) {
154         super.printf(format, args);
155         return this;
156     }
157 
158     @Override
159     public void println() {
160         super.println();
161     }
162 
163     @Override
164     public void println(final boolean x) {
165         super.println(x);
166     }
167 
168     @Override
169     public void println(final char x) {
170         super.println(x);
171     }
172 
173     @Override
174     public void println(final char[] x) {
175         super.println(x);
176     }
177 
178     @Override
179     public void println(final double x) {
180         super.println(x);
181     }
182 
183     @Override
184     public void println(final float x) {
185         super.println(x);
186     }
187 
188     @Override
189     public void println(final int x) {
190         super.println(x);
191     }
192 
193     @Override
194     public void println(final long x) {
195         super.println(x);
196     }
197 
198     @Override
199     public void println(final Object x) {
200         super.println(x);
201     }
202 
203     @Override
204     public void println(final String x) {
205         super.println(x);
206     }
207 
208     @Override
209     public String toString() {
210         return "{stream=" + this.out + '}';
211     }
212 
213     @Override
214     public void write(final byte[] b) throws IOException {
215         super.write(b);
216     }
217 
218     @Override
219     public void write(final byte[] b, final int off, final int len) {
220         super.write(b, off, len);
221     }
222 
223     @Override
224     public void write(final int b) {
225         super.write(b);
226     }
227 }