source: binary-improvements2/WebServer/src/SSE/EventLog.cs@ 411

Last change on this file since 411 was 402, checked in by alloc, 22 months ago
  • Major refactoring
  • Using Utf8Json for (de)serialization
  • Moving APIs to REST
  • Removing dependencies from WebServer and MapRenderer to ServerFixes
File size: 1.6 KB
Line 
1using System;
2using JetBrains.Annotations;
3using UnityEngine;
4using Utf8Json;
5using Webserver.UrlHandlers;
6
7namespace Webserver.SSE {
8 [UsedImplicitly]
9 public class EventLog : AbsEvent {
10 public EventLog (SseHandler _parent) : base (_parent, _name: "log") {
11 Log.LogCallbacksExtended += LogCallback;
12 }
13
14 private static readonly byte[] jsonMsgKey = JsonWriter.GetEncodedPropertyNameWithBeginObject ("msg");
15 private static readonly byte[] jsonTypeKey = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("type");
16 private static readonly byte[] jsonTraceKey = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("trace");
17 private static readonly byte[] jsonIsotimeKey = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("isotime");
18 private static readonly byte[] jsonUptimeKey = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("uptime");
19
20 private void LogCallback (string _formattedMsg, string _plainMsg, string _trace, LogType _type, DateTime _timestamp, long _uptime) {
21 string isotime = _timestamp.ToString ("o");
22 string uptime = _uptime.ToString ();
23
24 JsonWriter writer = new JsonWriter ();
25
26 writer.WriteRaw (jsonMsgKey);
27 writer.WriteString (_plainMsg);
28
29 writer.WriteRaw (jsonTypeKey);
30 writer.WriteString (_type.ToStringCached ());
31
32 writer.WriteRaw (jsonTraceKey);
33 writer.WriteString (_trace);
34
35 writer.WriteRaw (jsonIsotimeKey);
36 writer.WriteString (isotime);
37
38 writer.WriteRaw (jsonUptimeKey);
39 writer.WriteString (uptime);
40
41 writer.WriteEndObject ();
42
43 SendData ("logLine", writer.ToString ());
44 }
45 }
46}
Note: See TracBrowser for help on using the repository browser.