Skip to content

Commit ac05220

Browse files
feat: Logger service (MAPCO-8870) (#30)
* add Nuget Manager * add Log4Net package via Nuget Manager * add Logger Service * fix naming * fix file name * change path * add min log level * change logger to replace unity's and not subscribe * change xml * Stop tracking * Stop tracking * add log4 net package * pr changes * format file * changes after pr * format
1 parent 9d3c8e1 commit ac05220

29 files changed

+1453
-1
lines changed

Assets/StreamingAssets/Logger.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"Enabled": true,
3+
"ConsoleEnabled": true,
4+
"Log4NetConfigXml": "Logger/log4net.xml",
5+
"MinLogLevel": "DEBUG",
6+
"StackTraceRowLimit": 0,
7+
"HttpEndpointUrl": "https://TODO/logs",
8+
"HttpPersistenceDirectory": "C:/Yahalom/logs/offline"
9+
}

Assets/StreamingAssets/Logger/LoggerConfig.json.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<log4net>
3+
<appender name="RollingInfoFileAppender" type="log4net.Appender.RollingFileAppender">
4+
<file type="log4net.Util.PatternString" value="%property{LogFilePath}info.log"/>
5+
<appendToFile value="true"/>
6+
<maximumFileSize value="10MB"/>
7+
<maxSizeRollBackups value="5"/>
8+
<staticLogFileName value="false"/>
9+
<preserveLogFileNameExtension value="true"/>
10+
<rollingStyle value="Size"/>
11+
<layout type="log4net.Layout.PatternLayout">
12+
<conversionPattern value="%date %-5level %logger - %message%newline"/>
13+
</layout>
14+
<threshold value="DEBUG"/>
15+
</appender>
16+
<appender name="RollingErrorFileAppender" type="log4net.Appender.RollingFileAppender">
17+
<file type="log4net.Util.PatternString" value="%property{LogFilePath}error.log"/>
18+
<appendToFile value="true"/>
19+
<maximumFileSize value="10MB"/>
20+
<maxSizeRollBackups value="5"/>
21+
<staticLogFileName value="false"/>
22+
<preserveLogFileNameExtension value="true"/>
23+
<rollingStyle value="Size"/>
24+
<layout type="log4net.Layout.PatternLayout">
25+
<conversionPattern value="%date %-5level %logger - %message%newline"/>
26+
</layout>
27+
<threshold value="WARN"/>
28+
</appender>
29+
30+
<appender name="HttpAppender"
31+
type="com.mapcolonies.core.Services.LoggerService.CustomAppenders.HttpAppender, com.mapcolonies.core">
32+
<EndpointUrl value="%property{HttpEndpointUrl}"/>
33+
<threshold value="WARN"/>
34+
<MaxPayloadSize value="5242880"/>
35+
<TimeThresholdMs value="30000"/>
36+
<PersistenceDirectory value="%property{HttpPersistenceDirectory}"/>
37+
</appender>
38+
39+
<root>
40+
<level value="ALL"/>
41+
<appender-ref ref="RollingInfoFileAppender"/>
42+
<appender-ref ref="RollingErrorFileAppender"/>
43+
<appender-ref ref="HttpAppender"/>
44+
</root>
45+
</log4net>

Assets/StreamingAssets/Logger/log4net.xml.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/com.mapcolonies.core/Services/LoggerService.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace com.mapcolonies.core.Services.LoggerService
2+
{
3+
[System.Serializable]
4+
public class Config
5+
{
6+
public string Log4NetConfigXml;
7+
public int StackTraceRowLimit;
8+
public bool Enabled;
9+
public bool ConsoleEnabled;
10+
public string MinLogLevel;
11+
public string HttpEndpointUrl;
12+
public string HttpPersistenceDirectory;
13+
}
14+
}

Assets/com.mapcolonies.core/Services/LoggerService/Config.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/com.mapcolonies.core/Services/LoggerService/CustomAppenders.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System;
2+
using log4net.Appender;
3+
using log4net.Core;
4+
using UnityEngine;
5+
using IUnityLogHandler = UnityEngine.ILogHandler;
6+
using Object = UnityEngine.Object;
7+
8+
namespace com.mapcolonies.core.Services.LoggerService.CustomAppenders
9+
{
10+
public class ConsoleAppender : AppenderSkeleton
11+
{
12+
public const string UnityContext = "unity:context";
13+
private readonly IUnityLogHandler _handler;
14+
private static readonly int ErrorLevel = Level.Error.Value;
15+
private static readonly int WarningLevel = Level.Warn.Value;
16+
17+
public ConsoleAppender(IUnityLogHandler handler)
18+
{
19+
_handler = handler;
20+
}
21+
22+
protected override void Append(LoggingEvent loggingEvent)
23+
{
24+
if (_handler == null) return;
25+
26+
Level level = loggingEvent.Level;
27+
if (level == null) return;
28+
29+
string message;
30+
try
31+
{
32+
message = RenderLoggingEvent(loggingEvent);
33+
}
34+
catch (Exception e)
35+
{
36+
_handler.LogFormat(LogType.Exception, null, "{0}", e);
37+
return;
38+
}
39+
40+
Object ctx = loggingEvent.LookupProperty(UnityContext) as Object;
41+
42+
LogType logType = level.Value switch
43+
{
44+
int value when value < WarningLevel => LogType.Log,
45+
int value when value >= WarningLevel && value < ErrorLevel => LogType.Warning,
46+
int value when value >= ErrorLevel => LogType.Error,
47+
_ => LogType.Log
48+
};
49+
50+
_handler.LogFormat(logType, ctx, "{0}", message);
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)