src/lib/memory-appender.model.ts
An appender which stores the log messages in the browser's memory.
The MemoryAppender is enabled by default. If you do not specify anything else, it is using this configuration:
{
"memoryAppender": [
{
"maxMessages": 250,
"threshold": "ALL"
}
}
Methods |
|
constructor(configuration?: MemoryAppenderConfiguration)
|
||||||||
Defined in src/lib/memory-appender.model.ts:32
|
||||||||
Creates a new instance of the appender.
Parameters :
|
Public append | ||||||||
append(loggingEvent: log4javascript.LoggingEvent)
|
||||||||
Defined in src/lib/memory-appender.model.ts:78
|
||||||||
Appender-specific method to append a log message.
Parameters :
Returns :
void
|
Public configure | ||||||||
configure(configuration: MemoryAppenderConfiguration)
|
||||||||
Defined in src/lib/memory-appender.model.ts:60
|
||||||||
Configures the logging depending on the given configuration. Only the defined properties get overwritten.
Parameters :
Returns :
void
|
Public getLogMessages |
getLogMessages()
|
Defined in src/lib/memory-appender.model.ts:137
|
Gets all messages stored in memory.
Returns :
LogMessage[]
stored messages |
Public getMaxMessages |
getMaxMessages()
|
Defined in src/lib/memory-appender.model.ts:112
|
Get the maximum number of messages which will be stored in memory.
Returns :
number
|
Public removeLogMessages |
removeLogMessages()
|
Defined in src/lib/memory-appender.model.ts:144
|
Remove all messages stored in memory.
Returns :
void
|
Public setMaxMessages | ||||||||
setMaxMessages(value: number)
|
||||||||
Defined in src/lib/memory-appender.model.ts:123
|
||||||||
Set the maximum number of messages which will be stored in memory. If the appender stores currently more messages than the new value allows, the oldest messages get removed.
Parameters :
Returns :
void
|
Public setOnLogMessagesChangedCallback | ||||||||
setOnLogMessagesChangedCallback(callback: (message: LogMessage) => void)
|
||||||||
Defined in src/lib/memory-appender.model.ts:154
|
||||||||
Registers a callback which will be called every time a new message is appended. This could be useful if you want to show new messages in realtime.
Parameters :
Returns :
void
|
Public toString |
toString()
|
Defined in src/lib/memory-appender.model.ts:105
|
Gets the appender's name. Mainly for unit testing purposes.
Returns :
string
appender's name |
import * as log4javascript from "log4javascript";
import { LogLevelConverter } from "./log-level.converter";
import { LogLevel } from "./log-level.model";
import { LogMessage } from "./log-message.model";
import { MemoryAppenderConfiguration } from "./memory-appender.configuration";
/**
* An appender which stores the log messages in the browser's memory.
*
* The MemoryAppender is enabled by default.
* If you do not specify anything else, it is using this configuration:
*
* ```JSON
* {
* "memoryAppender": [
* {
* "maxMessages": 250,
* "threshold": "ALL"
* }
* }
* ```
*/
export class MemoryAppender extends log4javascript.Appender {
private static maxMessagesDefault = 250;
private static thresholdDefault = "ALL";
private maxMessages: number;
private logMessages: LogMessage[];
private onLogMessagesChangedCallback: (message: LogMessage) => void;
/**
* Creates a new instance of the appender.
*
* @param configuration configuration for the appender.
*/
constructor(configuration?: MemoryAppenderConfiguration) {
super();
this.logMessages = [];
// process configuration
configuration = configuration || {};
this.configure({
maxMessages: configuration.maxMessages || MemoryAppender.maxMessagesDefault,
threshold: configuration.threshold || MemoryAppender.thresholdDefault,
});
this.maxMessages = MemoryAppender.maxMessagesDefault;
}
/**
* Configures the logging depending on the given configuration.
* Only the defined properties get overwritten.
*
* @param configuration configuration data.
*/
public configure(configuration: MemoryAppenderConfiguration): void {
if (configuration) {
if (configuration.maxMessages) {
this.setMaxMessages(configuration.maxMessages);
}
if (configuration.threshold) {
const convertedThreshold = LogLevelConverter.levelToLog4Javascript(
LogLevelConverter.levelFromString(configuration.threshold));
this.setThreshold(convertedThreshold);
}
}
}
/**
* Appender-specific method to append a log message.
*
* @param loggingEvent event to be appended.
*/
public append(loggingEvent: log4javascript.LoggingEvent): void {
// if logMessages is already full, remove oldest element
while (this.logMessages.length >= this.maxMessages) {
this.logMessages.shift();
}
// add event to logMessages
const message: LogMessage = {
level: LogLevel[LogLevelConverter.levelFromLog4Javascript(loggingEvent.level)],
logger: typeof loggingEvent.logger === "object" ? loggingEvent.logger.name : undefined,
message: loggingEvent.messages.slice(1),
methodName: loggingEvent.messages[0],
timeStamp: loggingEvent.timeStamp,
};
this.logMessages.push(message);
// inform about new message
if (typeof this.onLogMessagesChangedCallback === "function") {
this.onLogMessagesChangedCallback(message);
}
}
/**
* Gets the appender's name.
* Mainly for unit testing purposes.
*
* @return appender's name
*/
public toString(): string {
return "Ionic.Logging.MemoryAppender";
}
/**
* Get the maximum number of messages which will be stored in memory.
*/
public getMaxMessages(): number {
return this.maxMessages;
}
/**
* Set the maximum number of messages which will be stored in memory.
*
* If the appender stores currently more messages than the new value allows, the oldest messages get removed.
*
* @param value new maximum number
*/
public setMaxMessages(value: number): void {
this.maxMessages = value;
// if there are too much logMessages for the new value, remove oldest messages
if (this.logMessages.length > this.maxMessages) {
this.logMessages.splice(0, this.logMessages.length - this.maxMessages);
}
}
/**
* Gets all messages stored in memory.
*
* @return stored messages
*/
public getLogMessages(): LogMessage[] {
return this.logMessages;
}
/**
* Remove all messages stored in memory.
*/
public removeLogMessages(): void {
this.logMessages.splice(0);
}
/**
* Registers a callback which will be called every time a new message is appended.
* This could be useful if you want to show new messages in realtime.
*
* @param callback callback to be called
*/
public setOnLogMessagesChangedCallback(callback: (message: LogMessage) => void): void {
this.onLogMessagesChangedCallback = callback;
}
}