(61d00a474) v0.9.7.1
This commit is contained in:
@@ -0,0 +1,233 @@
|
||||
using System;
|
||||
#if WINDOWS_UWP || WINDOWS_WSA
|
||||
using Windows.Foundation.Diagnostics;
|
||||
using MetroLog;
|
||||
using MetroLog.Targets;
|
||||
#elif MONO
|
||||
using NLog;
|
||||
using NLog.Config;
|
||||
using NLog.Targets;
|
||||
using GameAnalyticsSDK.Net.Device;
|
||||
using System.IO;
|
||||
#endif
|
||||
|
||||
namespace GameAnalyticsSDK.Net.Logging
|
||||
{
|
||||
internal class GALogger
|
||||
{
|
||||
#region Fields and properties
|
||||
|
||||
private static readonly GALogger _instance = new GALogger();
|
||||
private bool infoLogEnabled;
|
||||
private bool infoLogVerboseEnabled;
|
||||
#pragma warning disable 0649
|
||||
private static bool debugEnabled;
|
||||
#pragma warning restore 0649
|
||||
private const string Tag = "GameAnalytics";
|
||||
|
||||
#if WINDOWS_UWP || WINDOWS_WSA
|
||||
private IFileLoggingSession session;
|
||||
private ILoggingChannel logger;
|
||||
private ILogger log;
|
||||
#elif MONO
|
||||
private static ILogger logger;
|
||||
#elif !UNITY
|
||||
private ILogger logger;
|
||||
#endif
|
||||
|
||||
private static GALogger Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool InfoLog
|
||||
{
|
||||
set
|
||||
{
|
||||
Instance.infoLogEnabled = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool VerboseLog
|
||||
{
|
||||
set
|
||||
{
|
||||
Instance.infoLogVerboseEnabled = value;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion // Fields and properties
|
||||
|
||||
private GALogger()
|
||||
{
|
||||
#if DEBUG
|
||||
debugEnabled = true;
|
||||
#endif
|
||||
#if WINDOWS_UWP || WINDOWS_WSA
|
||||
session = new FileLoggingSession("ga-session");
|
||||
#if WINDOWS_UWP
|
||||
var options = new LoggingChannelOptions();
|
||||
logger = new LoggingChannel("ga-channel", options);
|
||||
#else
|
||||
logger = new LoggingChannel("ga-channel");
|
||||
#endif
|
||||
session.AddLoggingChannel(logger);
|
||||
|
||||
LogManagerFactory.DefaultConfiguration.AddTarget(LogLevel.Trace, LogLevel.Fatal, new StreamingFileTarget());
|
||||
log = LogManagerFactory.DefaultLogManager.GetLogger<GALogger>();
|
||||
#elif MONO
|
||||
logger = LogManager.GetCurrentClassLogger();
|
||||
var config = new LoggingConfiguration();
|
||||
|
||||
var consoleTarget = new ColoredConsoleTarget();
|
||||
config.AddTarget("console", consoleTarget);
|
||||
|
||||
var fileTarget = new FileTarget();
|
||||
config.AddTarget("file", fileTarget);
|
||||
|
||||
//consoleTarget.Layout = @"${date:format=HH\:mm\:ss} ${logger} ${message}";
|
||||
fileTarget.FileName = GADevice.WritablePath + Path.DirectorySeparatorChar + "ga_log.txt";
|
||||
fileTarget.Layout = "${message}";
|
||||
|
||||
var rule1 = new LoggingRule("*", LogLevel.Debug, consoleTarget);
|
||||
config.LoggingRules.Add(rule1);
|
||||
|
||||
var rule2 = new LoggingRule("*", LogLevel.Debug, fileTarget);
|
||||
config.LoggingRules.Add(rule2);
|
||||
|
||||
LogManager.Configuration = config;
|
||||
#endif
|
||||
}
|
||||
|
||||
#region Public methods
|
||||
|
||||
public static void I(String format)
|
||||
{
|
||||
if(!Instance.infoLogEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string message = "Info/" + Tag + ": " + format;
|
||||
Instance.SendNotificationMessage(message, EGALoggerMessageType.Info);
|
||||
}
|
||||
|
||||
public static void W(String format)
|
||||
{
|
||||
string message = "Warning/" + Tag + ": " + format;
|
||||
Instance.SendNotificationMessage(message, EGALoggerMessageType.Warning);
|
||||
}
|
||||
|
||||
public static void E(String format)
|
||||
{
|
||||
string message = "Error/" + Tag + ": " + format;
|
||||
Instance.SendNotificationMessage(message, EGALoggerMessageType.Error);
|
||||
}
|
||||
|
||||
public static void II(String format)
|
||||
{
|
||||
if(!Instance.infoLogVerboseEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string message = "Verbose/" + Tag + ": " + format;
|
||||
Instance.SendNotificationMessage(message, EGALoggerMessageType.Info);
|
||||
}
|
||||
|
||||
public static void D(String format)
|
||||
{
|
||||
if(!debugEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string message = "Debug/" + Tag + ": " + format;
|
||||
Instance.SendNotificationMessage(message, EGALoggerMessageType.Debug);
|
||||
}
|
||||
|
||||
#endregion // Public methods
|
||||
|
||||
#region Private methods
|
||||
|
||||
private void SendNotificationMessage(string message, EGALoggerMessageType type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case EGALoggerMessageType.Error:
|
||||
{
|
||||
#if UNITY
|
||||
UnityEngine.Debug.LogError(message);
|
||||
#elif WINDOWS_UWP || WINDOWS_WSA
|
||||
logger.LogMessage(message, LoggingLevel.Error);
|
||||
log.Error(message);
|
||||
GameAnalytics.MessageLogged(message, type);
|
||||
#elif MONO
|
||||
logger.Error(message);
|
||||
#else
|
||||
logger.LogError(message);
|
||||
GameAnalytics.MessageLogged(message, type);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
case EGALoggerMessageType.Warning:
|
||||
{
|
||||
#if UNITY
|
||||
UnityEngine.Debug.LogWarning(message);
|
||||
#elif WINDOWS_UWP || WINDOWS_WSA
|
||||
logger.LogMessage(message, LoggingLevel.Warning);
|
||||
log.Warn(message);
|
||||
GameAnalytics.MessageLogged(message, type);
|
||||
#elif MONO
|
||||
logger.Warn(message);
|
||||
#else
|
||||
logger.LogWarning(message);
|
||||
GameAnalytics.MessageLogged(message, type);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
case EGALoggerMessageType.Debug:
|
||||
{
|
||||
#if UNITY
|
||||
UnityEngine.Debug.Log(message);
|
||||
#elif WINDOWS_UWP || WINDOWS_WSA
|
||||
logger.LogMessage(message, LoggingLevel.Information);
|
||||
log.Debug(message);
|
||||
GameAnalytics.MessageLogged(message, type);
|
||||
#elif MONO
|
||||
logger.Debug(message);
|
||||
#else
|
||||
logger.LogDebug(message);
|
||||
GameAnalytics.MessageLogged(message, type);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
case EGALoggerMessageType.Info:
|
||||
{
|
||||
#if UNITY
|
||||
UnityEngine.Debug.Log(message);
|
||||
#elif WINDOWS_UWP || WINDOWS_WSA
|
||||
logger.LogMessage(message, LoggingLevel.Information);
|
||||
log.Info(message);
|
||||
GameAnalytics.MessageLogged(message, type);
|
||||
#elif MONO
|
||||
logger.Info(message);
|
||||
#else
|
||||
logger.LogInformation(message);
|
||||
GameAnalytics.MessageLogged(message, type);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion // Private methods
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user