using System;
using System.Text;
using Core.Utility;
#if COMBAT_SERVER
using NLog;
#endif
#if !COMBAT_SERVER
using UnityEngine;
#endif
using Object = System.Object;
namespace Fort23.UTool
{
public class LogTool
{
public static ILogSend LogSend;
public static string ColorForGreen = "green";
public static string ColorForOrange = "orange";
public static string ColorForRed = "red";
#if COMBAT_SERVER
public static NLog.Logger logger
{
get
{
if (_logger == null)
{
_logger = NLog.LogManager.GetCurrentClassLogger();
}
return _logger;
}
}
private static NLog.Logger _logger;
#endif
#if UNITY_EDITOR
public static bool IsDebug = true;
#else
#if COMBAT_SERVER
public static bool IsDebug = true;
#else
public static bool IsDebug = false;
#endif
#endif
private static StringBuilder ColorLog(object str, string color)
{
string colorFormat = color;
StringBuilder sb = new StringBuilder();
sb.AppendFormat("[{0}]", str, colorFormat);
return sb;
}
public static void Log(object msg)
{
if (!IsDebug)
{
return;
}
#if !COMBAT_SERVER
Debug.Log(ColorLog(msg, ColorForGreen));
#elif COMBAT_SERVER
logger.Log(LogLevel.Info, msg);
#endif
}
public static void Log(string msg)
{
if (!IsDebug)
{
return;
}
#if !COMBAT_SERVER
Debug.Log(ColorLog(msg, ColorForGreen));
#elif COMBAT_SERVER
logger.Log(LogLevel.Info, msg);
// logger.Log(LogLevel.Info, msg);
#endif
}
public static void Warning(string msg)
{
#if!COMBAT_SERVER
Debug.LogWarning(ColorLog(msg, ColorForOrange));
#elif COMBAT_SERVER
logger.Log(LogLevel.Warn, msg);
#endif
}
///
/// 错误是任何情况下都会打印。
///
///
public static void Error(string msg)
{
// System.Diagnostics.StackTrace stackTrace= new System.Diagnostics.StackTrace();
LogSend?.SendError(msg);
#if !COMBAT_SERVER
Debug.LogError(ColorLog(msg, ColorForRed));
// Debug.LogError(msg);
#elif COMBAT_SERVER
logger.Error(msg);
#endif
}
///
/// 错误是任何情况下都会打印。
///
///
public static void Error(Exception e)
{
LogSend?.SendException(e);
#if !COMBAT_SERVER
Exception(e);
#elif COMBAT_SERVER
logger.Error(e);
#endif
}
public static void Exception(Exception e)
{
LogSend?.SendException(e);
#if !COMBAT_SERVER
Debug.LogException(e);
#elif COMBAT_SERVER
Console.WriteLine(e);
logger.Error(e);
#endif
}
#if UNITY_EDITOR
///
/// 暂停游戏
///
public static void Paused()
{
UnityEditor.EditorApplication.isPaused = true;
}
#endif
}
}