コード例 #1
0
        private static void WriteLog(string logType, string msg)
        {
            StackFrame callStack = new StackFrame(2, true);
            FirePHPLog log       = new FirePHPLog();

            log.logType = logType;
            // log.header = new { Type = logType, File = callStack.GetFileName(), Line = callStack.GetFileLineNumber() };
            log.header = new { Type = logType, File = "", Line = "" };
            log.msg    = msg;

            DumpLog(log);
        }
コード例 #2
0
        public static void Table(string label, string[][] table)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            StackFrame           callStack  = new StackFrame(1, true);

            FirePHPLog log = new FirePHPLog();

            log.logType = "TABLE";
            //log.header = new { Type = "TABLE", Label = label, File = callStack.GetFileName(), Line = callStack.GetFileLineNumber() };
            log.header = new { Type = "TABLE", Label = label, File = "", Line = "" };
            log.msg    = table;

            DumpLog(log);
        }
コード例 #3
0
        public static void Exception(Exception exception)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            StackFrame           callStack  = new StackFrame(1, true);

            StackTrace stackTrace;
            FirePHPLog log = new FirePHPLog();

            log.logType = "EXCEPTION";
            log.header  = new { Type = "EXCEPTION", File = exception.Source, Line = 1 };

            int       exceptionCount   = 0;
            Exception currentException = exception;

            var traceList = new List <object>();

            while (currentException.InnerException != null)
            {
                stackTrace       = new StackTrace(currentException, true);
                currentException = exception.InnerException;
                exceptionCount++;

                var trace = new { file = currentException.Source, line = currentException.Source, function = currentException.Message, args = new string[0] };
                traceList.Add(trace);
            }

            if (exceptionCount > 0)
            {
                var trace = new object[exceptionCount];
            }

            stackTrace = new StackTrace(exception, true);

            log.msg = new
            {
                Class   = "Exception",
                Message = exception.Message,
                File    = stackTrace.GetFrame(0).GetFileName(),
                Line    = stackTrace.GetFrame(0).GetFileLineNumber(),
                Type    = "throw",
                Trace   = traceList.ToArray()
            };

            DumpLog(log);
        }
コード例 #4
0
        public static void DumpLog(FirePHPLog log)
        {
            if (!IsEnabled)
            {
                return;
            }
            HttpContext context = HttpContext.Current;

            Dictionary <string, string> ret        = new Dictionary <string, string>();
            JavaScriptSerializer        serializer = new JavaScriptSerializer();

            InitHeader(context.Response);

            string json = String.Format("[{0}, {1}]", serializer.Serialize(log.header), serializer.Serialize(log.msg));

            context.Response.AppendHeader(String.Format("X-Wf-1-1-1-{0}", (logCounter + 1)), String.Format("{0}|{1}|", json.Length, json));
            if (logCounter++ > 9999)
            {
                logCounter = 0;
            }
        }