lib/goog/debug/logrecord.js

1// Copyright 2006 The Closure Library Authors. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS-IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15/**
16 * @fileoverview Definition of the LogRecord class. Please minimize
17 * dependencies this file has on other closure classes as any dependency it
18 * takes won't be able to use the logging infrastructure.
19 *
20 */
21
22goog.provide('goog.debug.LogRecord');
23
24
25
26/**
27 * LogRecord objects are used to pass logging requests between
28 * the logging framework and individual log Handlers.
29 * @constructor
30 * @param {goog.debug.Logger.Level} level One of the level identifiers.
31 * @param {string} msg The string message.
32 * @param {string} loggerName The name of the source logger.
33 * @param {number=} opt_time Time this log record was created if other than now.
34 * If 0, we use #goog.now.
35 * @param {number=} opt_sequenceNumber Sequence number of this log record. This
36 * should only be passed in when restoring a log record from persistence.
37 */
38goog.debug.LogRecord = function(level, msg, loggerName,
39 opt_time, opt_sequenceNumber) {
40 this.reset(level, msg, loggerName, opt_time, opt_sequenceNumber);
41};
42
43
44/**
45 * Time the LogRecord was created.
46 * @type {number}
47 * @private
48 */
49goog.debug.LogRecord.prototype.time_;
50
51
52/**
53 * Level of the LogRecord
54 * @type {goog.debug.Logger.Level}
55 * @private
56 */
57goog.debug.LogRecord.prototype.level_;
58
59
60/**
61 * Message associated with the record
62 * @type {string}
63 * @private
64 */
65goog.debug.LogRecord.prototype.msg_;
66
67
68/**
69 * Name of the logger that created the record.
70 * @type {string}
71 * @private
72 */
73goog.debug.LogRecord.prototype.loggerName_;
74
75
76/**
77 * Sequence number for the LogRecord. Each record has a unique sequence number
78 * that is greater than all log records created before it.
79 * @type {number}
80 * @private
81 */
82goog.debug.LogRecord.prototype.sequenceNumber_ = 0;
83
84
85/**
86 * Exception associated with the record
87 * @type {Object}
88 * @private
89 */
90goog.debug.LogRecord.prototype.exception_ = null;
91
92
93/**
94 * @define {boolean} Whether to enable log sequence numbers.
95 */
96goog.define('goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS', true);
97
98
99/**
100 * A sequence counter for assigning increasing sequence numbers to LogRecord
101 * objects.
102 * @type {number}
103 * @private
104 */
105goog.debug.LogRecord.nextSequenceNumber_ = 0;
106
107
108/**
109 * Sets all fields of the log record.
110 * @param {goog.debug.Logger.Level} level One of the level identifiers.
111 * @param {string} msg The string message.
112 * @param {string} loggerName The name of the source logger.
113 * @param {number=} opt_time Time this log record was created if other than now.
114 * If 0, we use #goog.now.
115 * @param {number=} opt_sequenceNumber Sequence number of this log record. This
116 * should only be passed in when restoring a log record from persistence.
117 */
118goog.debug.LogRecord.prototype.reset = function(level, msg, loggerName,
119 opt_time, opt_sequenceNumber) {
120 if (goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS) {
121 this.sequenceNumber_ = typeof opt_sequenceNumber == 'number' ?
122 opt_sequenceNumber : goog.debug.LogRecord.nextSequenceNumber_++;
123 }
124
125 this.time_ = opt_time || goog.now();
126 this.level_ = level;
127 this.msg_ = msg;
128 this.loggerName_ = loggerName;
129 delete this.exception_;
130};
131
132
133/**
134 * Get the source Logger's name.
135 *
136 * @return {string} source logger name (may be null).
137 */
138goog.debug.LogRecord.prototype.getLoggerName = function() {
139 return this.loggerName_;
140};
141
142
143/**
144 * Get the exception that is part of the log record.
145 *
146 * @return {Object} the exception.
147 */
148goog.debug.LogRecord.prototype.getException = function() {
149 return this.exception_;
150};
151
152
153/**
154 * Set the exception that is part of the log record.
155 *
156 * @param {Object} exception the exception.
157 */
158goog.debug.LogRecord.prototype.setException = function(exception) {
159 this.exception_ = exception;
160};
161
162
163/**
164 * Get the source Logger's name.
165 *
166 * @param {string} loggerName source logger name (may be null).
167 */
168goog.debug.LogRecord.prototype.setLoggerName = function(loggerName) {
169 this.loggerName_ = loggerName;
170};
171
172
173/**
174 * Get the logging message level, for example Level.SEVERE.
175 * @return {goog.debug.Logger.Level} the logging message level.
176 */
177goog.debug.LogRecord.prototype.getLevel = function() {
178 return this.level_;
179};
180
181
182/**
183 * Set the logging message level, for example Level.SEVERE.
184 * @param {goog.debug.Logger.Level} level the logging message level.
185 */
186goog.debug.LogRecord.prototype.setLevel = function(level) {
187 this.level_ = level;
188};
189
190
191/**
192 * Get the "raw" log message, before localization or formatting.
193 *
194 * @return {string} the raw message string.
195 */
196goog.debug.LogRecord.prototype.getMessage = function() {
197 return this.msg_;
198};
199
200
201/**
202 * Set the "raw" log message, before localization or formatting.
203 *
204 * @param {string} msg the raw message string.
205 */
206goog.debug.LogRecord.prototype.setMessage = function(msg) {
207 this.msg_ = msg;
208};
209
210
211/**
212 * Get event time in milliseconds since 1970.
213 *
214 * @return {number} event time in millis since 1970.
215 */
216goog.debug.LogRecord.prototype.getMillis = function() {
217 return this.time_;
218};
219
220
221/**
222 * Set event time in milliseconds since 1970.
223 *
224 * @param {number} time event time in millis since 1970.
225 */
226goog.debug.LogRecord.prototype.setMillis = function(time) {
227 this.time_ = time;
228};
229
230
231/**
232 * Get the sequence number.
233 * <p>
234 * Sequence numbers are normally assigned in the LogRecord
235 * constructor, which assigns unique sequence numbers to
236 * each new LogRecord in increasing order.
237 * @return {number} the sequence number.
238 */
239goog.debug.LogRecord.prototype.getSequenceNumber = function() {
240 return this.sequenceNumber_;
241};
242