using System;
using System.IO;
using log4net;
using log4net.Config;
using log4net.Core;
using UnityEngine;
///
/// Wraps Log4Net to only be used when not bein in a WebGL environment.
/// When the game runs in WebGL, only the default console logs are used.
///
public static class LogManager
{
public static Level GlobalLogLevel = Level.Debug;
public static log4net.ILog GetLogger(Type type)
{
#if !UNITY_WEBGL || UNITY_EDITOR
return log4net.LogManager.GetLogger(type);
#else
return new ConsoleLogger();
#endif
}
public static void ConfigureLogging()
{
#if !UNITY_WEBGL || UNITY_EDITOR
log4net.GlobalContext.Properties["LogFileName"] = $"{Application.dataPath}" +
"\\Logging\\SSOLog";
var fi = new FileInfo($"{Application.dataPath}" +
"\\Logging\\Log4NetConfiguration.xml");
XmlConfigurator.Configure(fi);
#else
UnityEngine.Debug.Log("When using WebGL, logging is restricted to the console and unity's built in logger.");
#endif
}
}
///
/// Logger which has the ILog interface, but only prints to Unity Console.
///
public class ConsoleLogger : log4net.ILog
{
public bool IsDebugEnabled
{
get
{
return LogManager.GlobalLogLevel >= Level.Debug;
}
}
public bool IsInfoEnabled
{
get
{
return LogManager.GlobalLogLevel >= Level.Info;
}
}
public bool IsWarnEnabled
{
get
{
return LogManager.GlobalLogLevel >= Level.Warn;
}
}
public bool IsErrorEnabled
{
get
{
return LogManager.GlobalLogLevel >= Level.Error;
}
}
public bool IsFatalEnabled
{
get
{
return LogManager.GlobalLogLevel >= Level.Error;
}
}
log4net.Core.ILogger ILoggerWrapper.Logger => throw new NotImplementedException();
/* Log a message object */
public void Debug(object message)
{
if (IsDebugEnabled)
UnityEngine.Debug.Log(message);
}
public void Info(object message)
{
if (IsInfoEnabled)
UnityEngine.Debug.Log(message);
}
public void Warn(object message)
{
if (IsWarnEnabled)
UnityEngine.Debug.LogWarning(message);
}
public void Error(object message)
{
if (IsErrorEnabled)
UnityEngine.Debug.LogError(message);
}
public void Fatal(object message)
{
if (IsFatalEnabled)
UnityEngine.Debug.LogError(message);
}
/* Log a message object and exception */
public void Debug(object message, Exception t)
{
if (IsDebugEnabled)
UnityEngine.Debug.Log(string.Format("{0}\n{1}: {2}\n{3}", message, t.GetType().ToString(), t.Message, t.StackTrace));
}
public void Info(object message, Exception t)
{
if (IsInfoEnabled)
UnityEngine.Debug.Log(string.Format("{0}\n{1}: {2}\n{3}", message, t.GetType().ToString(), t.Message, t.StackTrace));
}
public void Warn(object message, Exception t)
{
if (IsWarnEnabled)
UnityEngine.Debug.LogWarning(string.Format("{0}\n{1}: {2}\n{3}", message, t.GetType().ToString(), t.Message, t.StackTrace));
}
public void Error(object message, Exception t)
{
if (IsErrorEnabled)
UnityEngine.Debug.LogError(string.Format("{0}\n{1}: {2}\n{3}", message, t.GetType().ToString(), t.Message, t.StackTrace));
}
public void Fatal(object message, Exception t)
{
if (IsFatalEnabled)
UnityEngine.Debug.LogError(string.Format("{0}\n{1}: {2}\n{3}", message, t.GetType().ToString(), t.Message, t.StackTrace));
}
/* Log a message string using the System.String.Format syntax */
public void DebugFormat(string format, params object[] args)
{
if (IsDebugEnabled)
UnityEngine.Debug.Log(string.Format(format, args));
}
public void InfoFormat(string format, params object[] args)
{
if (IsInfoEnabled)
UnityEngine.Debug.Log(string.Format(format, args));
}
public void WarnFormat(string format, params object[] args)
{
if (IsWarnEnabled)
UnityEngine.Debug.LogWarning(string.Format(format, args));
}
public void ErrorFormat(string format, params object[] args)
{
if (IsErrorEnabled)
UnityEngine.Debug.LogError(string.Format(format, args));
}
public void FatalFormat(string format, params object[] args)
{
if (IsFatalEnabled)
UnityEngine.Debug.LogError(string.Format(format, args));
}
/* Log a message string using the System.String.Format syntax */
public void DebugFormat(IFormatProvider provider, string format, params object[] args)
{
if (IsDebugEnabled)
UnityEngine.Debug.Log(string.Format(provider, format, args));
}
public void InfoFormat(IFormatProvider provider, string format, params object[] args)
{
if (IsInfoEnabled)
UnityEngine.Debug.Log(string.Format(provider, format, args));
}
public void WarnFormat(IFormatProvider provider, string format, params object[] args)
{
if (IsWarnEnabled)
UnityEngine.Debug.LogWarning(string.Format(provider, format, args));
}
public void ErrorFormat(IFormatProvider provider, string format, params object[] args)
{
if (IsErrorEnabled)
UnityEngine.Debug.LogError(string.Format(provider, format, args));
}
public void FatalFormat(IFormatProvider provider, string format, params object[] args)
{
if (IsFatalEnabled)
UnityEngine.Debug.LogError(string.Format(provider, format, args));
}
public void DebugFormat(string format, object arg0)
{
throw new NotImplementedException();
}
public void DebugFormat(string format, object arg0, object arg1)
{
throw new NotImplementedException();
}
public void DebugFormat(string format, object arg0, object arg1, object arg2)
{
throw new NotImplementedException();
}
public void InfoFormat(string format, object arg0)
{
throw new NotImplementedException();
}
public void InfoFormat(string format, object arg0, object arg1)
{
throw new NotImplementedException();
}
public void InfoFormat(string format, object arg0, object arg1, object arg2)
{
throw new NotImplementedException();
}
public void WarnFormat(string format, object arg0)
{
throw new NotImplementedException();
}
public void WarnFormat(string format, object arg0, object arg1)
{
throw new NotImplementedException();
}
public void WarnFormat(string format, object arg0, object arg1, object arg2)
{
throw new NotImplementedException();
}
public void ErrorFormat(string format, object arg0)
{
throw new NotImplementedException();
}
public void ErrorFormat(string format, object arg0, object arg1)
{
throw new NotImplementedException();
}
public void ErrorFormat(string format, object arg0, object arg1, object arg2)
{
throw new NotImplementedException();
}
public void FatalFormat(string format, object arg0)
{
throw new NotImplementedException();
}
public void FatalFormat(string format, object arg0, object arg1)
{
throw new NotImplementedException();
}
public void FatalFormat(string format, object arg0, object arg1, object arg2)
{
throw new NotImplementedException();
}
}