Esempio n. 1
0
        public void LogFormat(UnityEngine.LogType logType, UnityEngine.Object context, string format, params object[] args)
        {
            int stackDepth = 4;

            if (logType == UnityEngine.LogType.Exception)
            {
                stackDepth++;
            }

            var level = logType.Cast();

            string message = string.Format(format, args);
            string cmessage;

            PrepareMessageText(ref message, out cmessage);
            PostfixDeclaringType(ref message, ref cmessage, stackDepth);
            PostfixLogLevelInfo(ref message, ref cmessage, level);
            PostfixStackTrace(ref message, ref cmessage, level, context, stackDepth);
            PrefixTimeStamp(ref message, ref cmessage);

            lock (_locker)
            {
                using (var file = File.AppendText(LogFilePaths[level]))
                    file.WriteLine(message);
            }

            LogRotate(level);

            if (EchoToConsole && (LogLevel & level) > 0)
            {
                cmessage = cmessage.Replace("{", "{{").Replace("}", "}}");
                if (logType == UnityEngine.LogType.Exception)
                {
                    logType = UnityEngine.LogType.Error;
                }
#if UNITY_EDITOR
                _defaultLogHandler.LogFormat(logType, context, @cmessage);
#else
                _defaultLogHandler.LogFormat(logType, context, @message);
#endif
            }

#if DEBUG || PROFILE
            if (level == LoggerLogLevel.Assert || level == LoggerLogLevel.Exception)
            {
                if (BreakOnAssert)
                {
                    UnityEngine.Debug.Break();
                }
            }
            else if (level == LoggerLogLevel.Error && BreakOnError)
            {
                UnityEngine.Debug.Break();
            }
#endif
        }
        public void LogFormat(UnityEngine.LogType logType, UnityEngine.Object context, string format, params object[] args)
        {
            _handler.LogFormat(logType, context, format, args);

            var level = logType.Cast();

            #if DEBUG || PROFILE
            if (level == LoggerLogLevel.Assert || level == LoggerLogLevel.Exception)
            {
                DialogUtility.OpenStackJumpDialog(System.Enum.GetName(typeof(LoggerLogLevel), level) + "!", string.Format(format, args), 3);
            }
            #endif
        }