コード例 #1
0
        /// <summary>
        /// Log a message
        /// </summary>
        /// <param name="message">message to log</param>
        /// <param name="methodName">calling method</param>
        /// <param name="level">severity level</param>
        public void Log(String message, String methodName, Severity.Level level = Severity.Level.Trace)
        {
            if (GardenGateway.Files == null)
            {
                return;
            }

            if (level > Level)
            {
                return;
            }

            // prepare logging details
            if (InstanceNameFunc != null)
            {
                InstanceName = InstanceNameFunc.Invoke();
            }

            // build log line
            appendWithBrackets(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss,fff"));
            appendWithBrackets(level.ToString());
            appendWithBrackets(ThreadName);
            appendWithBrackets(ClassName);
            appendWithBrackets(InstanceName);
            appendWithBrackets(methodName);
            StringCache.Append(" - " + message);

            // rotate log files if this one's too long
            // how would this work if we're reusing an existing file? Count the lines first?

            /*
             *          if (s_Line >= s_MaxLinesPerFile) {
             *  //s_FileManager.doneUsing(s_FileName);
             *  s_FileName = "log - " + DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss");
             *  //s_FileManager.startUsing(s_FileName);
             *  s_Line = 1;
             * }
             **/

            GardenGateway.Files.writeLine(StringCache.ToString(), FileName);
            StringCache.Clear();

            if (ModInfo.DebugMode &&
                level == Severity.Level.Warning ||
                level == Severity.Level.Error ||
                level == Severity.Level.Fatal)
            {
                new Notifications.AlertNotification {
                    Text = String.Format("{0} in {1} - {2}",
                                         level, ClassName, InstanceName),
                    Color          = VRage.Game.MyFontEnum.Red,
                    DisplaySeconds = 5
                }.Raise();
            }
        }
コード例 #2
0
 public static void ProfileLog(
     string message,
     Severity.Level level             = Severity.Level.TRACE,
     string context                   = null,
     string primaryState              = null,
     string secondaryState            = null,
     bool condition                   = true,
     Assembly assembly                = null,
     [CallerFilePath] string filePath = null,
     [CallerMemberName] string member = null,
     [CallerLineNumber] int line      = 0
     )
 {
     assembly = (assembly != null) ? assembly : Assembly.GetCallingAssembly();
     Log(message, level, context, primaryState, secondaryState, condition, assembly, filePath, member, line);
 }
コード例 #3
0
 public LogItem(
     string message, Severity.Level level,
     string context, string primaryState, string secondaryState,
     Assembly assembly, string filePath, string member, int line
     )
 {
     Assembly       = assembly;
     Context        = (context != null) ? context : String.Empty;
     FileName       = Path.GetFileName(filePath);
     Level          = level;
     Line           = line;
     Member         = (member != null) ? member : String.Empty;
     Message        = (message != null) ? message : String.Empty;
     PrimaryState   = (primaryState != null) ? primaryState : String.Empty;
     SecondaryState = (secondaryState != null) ? secondaryState : String.Empty;
     Thread         = (ThreadTracker.ThreadName != null) ? ThreadTracker.ThreadName : ThreadTracker.ThreadNumber.ToString();
     Time           = DateTime.Now;
 }
コード例 #4
0
        public static void DebugLogCallStack(
            Severity.Level level             = Severity.Level.TRACE,
            string context                   = null,
            string primaryState              = null,
            string secondaryState            = null,
            bool condition                   = true,
            Assembly assembly                = null,
            [CallerFilePath] string filePath = null,
            [CallerMemberName] string member = null,
            [CallerLineNumber] int line      = 0
            )
        {
            if (condition)
            {
                StringBuilder builder = new StringBuilder(255);
                AppendStack(builder, new StackTrace(), typeof(Logger));
                var message = builder.ToString();

                assembly = (assembly != null) ? assembly : Assembly.GetCallingAssembly();
                Log(new LogItem(message, level, context, primaryState, secondaryState, assembly, filePath, member, line));
            }
        }
コード例 #5
0
ファイル: Notification.cs プロジェクト: Rynchodon/SEPC
 public static void DebugNotify(string message, int disappearTimeMs = 2000, Severity.Level level = Severity.Level.TRACE)
 {
     Notify(message, disappearTimeMs, level);
 }
コード例 #6
0
ファイル: Notification.cs プロジェクト: Rynchodon/SEPC
 /// <summary>
 /// Display a HUD notification, thread-safe and error-handled.
 /// </summary>
 public static void Notify(string message, int disappearTimeMs = 2000, Severity.Level level = Severity.Level.TRACE)
 {
     Notify(message, disappearTimeMs, Severity.FontForLevel(level));
 }
コード例 #7
0
 public void Debug(string toLog, Severity.Level level = Severity.Level.TRACE, bool condition = true, [CallerFilePath] string filePath = null, [CallerMemberName] string member = null, [CallerLineNumber] int lineNumber = 0)
 {
     LogWithContext(toLog, level, condition, filePath, member, lineNumber);
 }
コード例 #8
0
 private void LogWithContext(string message, Severity.Level level, bool condition, string filePath, string member, int lineNumber)
 {
     Logger.Log(message, level, Context, PrimaryState, SecondaryState, condition, CallerAssembly, filePath, member, lineNumber);
 }
コード例 #9
0
 public void Debug(Func <string> toLog, Severity.Level level = Severity.Level.DEBUG, bool condition = true, [CallerFilePath] string filePath = null, [CallerMemberName] string member = null, [CallerLineNumber] int lineNumber = 0)
 {
     LogWithContext(toLog.Invoke(), level, condition, filePath, member, lineNumber);
 }