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 * @param message message
51 * @param e exception
52 */
53 public ErrorItem(final String message, final Exception e) {
54 super();
55 this.message = message;
56 exception = e;
57 }
58
59 /**
60 * Creaet new instance.
61 * @param message message.
62 */
63 public ErrorItem(final String message) {
64 this(message, null);
65 }
66
67 /**
68 * Get column number.
69 * @return column number.
70 */
71 public int getColNumber() {
72 return colNumber;
73 }
74
75 /**
76 * Set column number.
77 * @param colNumber new column number.
78 */
79 public void setColNumber(int colNumber) {
80 this.colNumber = colNumber;
81 }
82
83 /**
84 * Get exception.
85 * @return exception.
86 */
87 public Throwable getException() {
88 return exception;
89 }
90
91 /**
92 * Set exception.
93 * @param exception exception
94 */
95 public void setException(final Throwable exception) {
96 this.exception = exception;
97 }
98
99 /**
100 * Get line number.
101 * @return line number.
102 */
103 public int getLineNumber() {
104 return lineNumber;
105 }
106
107 /**
108 * Set line number.
109 * @param lineNumber line number.
110 */
111 public void setLineNumber(final int lineNumber) {
112 this.lineNumber = lineNumber;
113 }
114
115 /**
116 * Get message.
117 * @return message.
118 */
119 public String getMessage() {
120 return message;
121 }
122
123 /**
124 * Set message.
125 * @param message message.
126 */
127 public void setMessage(final String message) {
128 this.message = message;
129 }
130
131 /**
132 * String representation of ErrorItem.
133 * @return string.
134 */
135 public String toString() {
136 String str =
137 "Reported error: \"" + message + "\"";
138
139 if (lineNumber != -1) {
140 str += " at line " + lineNumber + " column " + colNumber;
141 }
142 if (exception != null) {
143 str += (" with exception " + exception);
144 }
145 return str;
146 }
147
148 /**
149 * Dump the details of this ErrorItem to System.out.
150 */
151 public void dump() {
152 dump(System.out);
153 }
154
155 /**
156 * Dump the details of this ErrorItem on the specified {@link PrintStream}.
157 * @param ps print stream.
158 */
159 public void dump(final PrintStream ps) {
160 String str =
161 "Reported error: \"" + message + "\"";
162
163 if (lineNumber != -1) {
164 str += " at line " + lineNumber + " column " + colNumber;
165 }
166 ps.println(str);
167
168 if (exception != null) {
169 exception.printStackTrace(ps);
170 }
171 }
172 }