Skip to content

Commit 3f9ca5e

Browse files
committed
Added support for logging client self log to text area
1 parent f126812 commit 3f9ca5e

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

example/browser/index.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ <h1>Log Submission</h1>
2525
<h1>Diagnostics</h1>
2626
<button id="config-settings-log">Log Client Configuration Settings (settings sent from server)</button>
2727

28+
<h2>Client Logs</h2>
29+
<textarea id="logs" rows="30" style="width: 100%;"></textarea>
30+
2831
<script type="module" src="index.js"></script>
2932
</body>
3033
</html>

example/browser/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import { Exceptionless } from "../../node_modules/@exceptionless/browser/dist/index.min.js";
22
import { divide } from "./math.js";
3+
import { TextAreaSelfLogger } from "./text-area-logger.js";
34

45
Exceptionless.startup(c => {
56
c.apiKey = "LhhP1C9gijpSKCslHHCvwdSIz298twx271n1l6xw";
67
c.serverUrl = "http://localhost:5000";
78
c.updateSettingsWhenIdleInterval = 15000;
8-
c.useDebugLogger();
99
c.useLocalStorage();
10+
c.useDebugLogger();
11+
c.services.log = new TextAreaSelfLogger("logs", c.services.log);
1012
c.setUserIdentity("12345678", "Blake");
1113
c.useSessions();
1214

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
export class TextAreaSelfLogger {
2+
constructor(elementId, logger) {
3+
if (!elementId) {
4+
throw new Error("elementId is required");
5+
}
6+
7+
this.logger = logger;
8+
this.messageBuffer = [];
9+
if (document.readyState === "complete") {
10+
this.element = document.getElementById(elementId);
11+
} else {
12+
document.addEventListener("DOMContentLoaded", () => {
13+
this.element = document.getElementById(elementId);
14+
this.element.innerHTML = this.messageBuffer.join("\n") + this.element.innerHTML;
15+
this.messageBuffer = [];
16+
});
17+
}
18+
}
19+
20+
trace(message) {
21+
this.logger?.trace(message);
22+
this.log("debug", message);
23+
}
24+
info(message) {
25+
this.logger?.info(message);
26+
this.log("info", message);
27+
}
28+
warn(message) {
29+
this.logger?.warn(message);
30+
this.log("warn", message);
31+
}
32+
error(message) {
33+
this.logger?.error(message);
34+
this.log("error", message);
35+
}
36+
37+
log(level, message) {
38+
if (this.element) {
39+
this.element.innerHTML += `\n[${level}] Exceptionless: ${message}`;
40+
} else {
41+
this.messageBuffer.push(`[${level}] Exceptionless: ${message}`)
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)