JUST DO IT ~

          我只想當個程序員

          log4 net 出錯 定位行 的能力 LocationInfo using System.Diagnostics;


          片段 "


           public LocationInfo(Type callerStackBoundaryDeclaringType)
            {
             // Initialize all fields
             m_className = NA;
             m_fileName = NA;
             m_lineNumber = NA;
             m_methodName = NA;
             m_fullInfo = NA;

          #if !NETCF
             if (callerStackBoundaryDeclaringType != null)
             {
              try
              {
               StackTrace st = new StackTrace(true);
               int frameIndex = 0;

               // skip frames not from fqnOfCallingClass
               while (frameIndex < st.FrameCount)
               {
                StackFrame frame = st.GetFrame(frameIndex);
                if (frame != null && frame.GetMethod().DeclaringType == callerStackBoundaryDeclaringType)
                {
                 break;
                }
                frameIndex++;
               }

               // skip frames from fqnOfCallingClass
               while (frameIndex < st.FrameCount)
               {
                StackFrame frame = st.GetFrame(frameIndex);
                if (frame != null && frame.GetMethod().DeclaringType != callerStackBoundaryDeclaringType)
                {
                 break;
                }
                frameIndex++;
               }

               if (frameIndex < st.FrameCount)
               {
                // now frameIndex is the first 'user' caller frame
                StackFrame locationFrame = st.GetFrame(frameIndex);

                if (locationFrame != null)
                {
                 System.Reflection.MethodBase method = locationFrame.GetMethod();

                 if (method != null)
                 {
                  m_methodName =  method.Name;
                  if (method.DeclaringType != null)
                  {
                   m_className = method.DeclaringType.FullName;
                  }
                 }
                 m_fileName = locationFrame.GetFileName();
                 m_lineNumber = locationFrame.GetFileLineNumber().ToString(System.Globalization.NumberFormatInfo.InvariantInfo);

                 // Combine all location info
                 m_fullInfo =  m_className + '.' + m_methodName + '(' + m_fileName + ':' + m_lineNumber + ')';

                }
               }
              }
              catch(System.Security.SecurityException)
              {
               // This security exception will occur if the caller does not have
               // some undefined set of SecurityPermission flags.
               LogLog.Debug("LocationInfo: Security exception while trying to get caller stack frame. Error Ignored. Location Information Not Available.");
              }
             }
          #endif
            }





          posted on 2009-10-01 00:02 小高 閱讀(336) 評論(0)  編輯  收藏 所屬分類: DotNet

          導航

          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(352)

          收藏夾(19)

          關注的blog

          手冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 林周县| 灵山县| 金门县| 曲靖市| 黔东| 临朐县| 怀仁县| 弥勒县| 台湾省| 广河县| 田阳县| 宜君县| 罗平县| 连州市| 满洲里市| 江门市| 邓州市| 东莞市| 南靖县| 饶阳县| 赤城县| 霍林郭勒市| 阳春市| 资溪县| 鸡泽县| 成安县| 蕲春县| 上高县| 平乡县| 桑植县| 绥芬河市| 宁强县| 漠河县| 肃北| 桐柏县| 沐川县| 吴忠市| 三门县| 吉安市| 通许县| 板桥市|