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.log4j.spi;
19
20 import java.io.PrintStream;
21
22 /**
23 * Used to store special log4j errors which cannot be logged using internal
24 * logging. Such errors include those occurring during the initial phases
25 * of log4j configuration or errors emanating from core components such as
26 * Logger or Hierarchy.
27 *
28 * @author Ceki Gulcu
29 */
30 public class ErrorItem {
31 /**
32 * Message.
33 */
34 String message;
35 /**
36 * Column.
37 */
38 int colNumber = -1;
39 /**
40 * Line number.
41 */
42 int lineNumber = -1;
43 /**
44 * Exception.
45 */
46 Throwable exception;
47
48 /**
49 * Create new instance.
50 *
51 * @param message message
52 * @param e exception
53 */
54 public ErrorItem(final String message, final Exception e) {
55 super();
56 this.message = message;
57 exception = e;
58 }
59
60 /**
61 * Creaet new instance.
62 *
63 * @param message message.
64 */
65 public ErrorItem(final String message) {
66 this(message, null);
67 }
68
69 /**
70 * Get column number.
71 *
72 * @return column number.
73 */
74 public int getColNumber() {
75 return colNumber;
76 }
77
78 /**
79 * Set column number.
80 *
81 * @param colNumber new column number.
82 */
83 public void setColNumber(int colNumber) {
84 this.colNumber = colNumber;
85 }
86
87 /**
88 * Get exception.
89 *
90 * @return exception.
91 */
92 public Throwable getException() {
93 return exception;
94 }
95
96 /**
97 * Set exception.
98 *
99 * @param exception exception
100 */
101 public void setException(final Throwable exception) {
102 this.exception = exception;
103 }
104
105 /**
106 * Get line number.
107 *
108 * @return line number.
109 */
110 public int getLineNumber() {
111 return lineNumber;
112 }
113
114 /**
115 * Set line number.
116 *
117 * @param lineNumber line number.
118 */
119 public void setLineNumber(final int lineNumber) {
120 this.lineNumber = lineNumber;
121 }
122
123 /**
124 * Get message.
125 *
126 * @return message.
127 */
128 public String getMessage() {
129 return message;
130 }
131
132 /**
133 * Set message.
134 *
135 * @param message message.
136 */
137 public void setMessage(final String message) {
138 this.message = message;
139 }
140
141 /**
142 * String representation of ErrorItem.
143 *
144 * @return string.
145 */
146 public String toString() {
147 String str =
148 "Reported error: \"" + message + "\"";
149
150 if (lineNumber != -1) {
151 str += " at line " + lineNumber + " column " + colNumber;
152 }
153 if (exception != null) {
154 str += (" with exception " + exception);
155 }
156 return str;
157 }
158
159 /**
160 * Dump the details of this ErrorItem to System.out.
161 */
162 public void dump() {
163 dump(System.out);
164 }
165
166 /**
167 * Dump the details of this ErrorItem on the specified {@link PrintStream}.
168 *
169 * @param ps print stream.
170 */
171 public void dump(final PrintStream ps) {
172 String str =
173 "Reported error: \"" + message + "\"";
174
175 if (lineNumber != -1) {
176 str += " at line " + lineNumber + " column " + colNumber;
177 }
178 ps.println(str);
179
180 if (exception != null) {
181 exception.printStackTrace(ps);
182 }
183 }
184 }