zoukankan      html  css  js  c++  java
  • 将Error异常日志从普通日志中剥离

      开发过程中经常需要调试和线上环境查看异常日志的需求,但普通消息与异常消息混在一起实在是非常难得找,上则NM的文档够你头痛,所以就将Error级别的日志抽离出来。

      本示例采用log4net来配置:

      1、先配置web.config,添加:

    <configSections>
        <!-- 添加log4net配置节 -->
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"></section>
      </configSections>

      2、在<configuration>直接下级添加:

    <log4net>
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="Log/" />
          <param name="AppendToFile" value="true" />
          <param name="MaxSizeRollBackups" value="10" />
          <param name="StaticLogFileName" value="false" />
          <param name="DatePattern" value="yyyy-MM-dd'.txt'" />
          <param name="RollingStyle" value="Date" />
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:fff} [%thread] %-5level %logger %ndc - %message%newline" />
          </layout>
        </appender>
        <appender name="ErrorLogAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="Log/" />
          <param name="AppendToFile" value="true" />
          <param name="MaxSizeRollBackups" value="10" />
          <param name="StaticLogFileName" value="false" />
          <param name="DatePattern" value="yyyy-MM-dd'-error.txt'" />
          <param name="RollingStyle" value="Date" />
          <layout type="log4net.Layout.PatternLayout">
            <!--输出格式-->
            <param name="ConversionPattern" value="%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
          </layout>
        </appender>
        <root>
          <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
          <level value="INFO" />
          <appender-ref ref="RollingLogFileAppender" />
          <level value="ERROR" />
          <appender-ref ref="ErrorLogAppender" />
        </root>

    <logger additivity="true" name="InfoLog">
    <level value="INFO" />
    <appender-ref ref="RollingLogFileAppender" />
    </logger>
    <logger additivity="true" name="ErrorLog">
    <level value="ERROR" />
    <appender-ref ref="ErrorLogAppender" />
    </logger>

      </log4net>

      注意高亮处

      InfoLog中配置 INFO ,只记录INFO

      ErrorLog中 <level value="ERROR" /> 从ERROR级别开始。

      这样就可以将ERROR抽离出来。

      3、定义日志类LogHelper

     public static class LogHelper
        {
            static ILog _logdebug = LogManager.GetLogger("Debug");
            static ILog _loginfo = LogManager.GetLogger("InfoLog");
            static ILog _logwarn = LogManager.GetLogger("Warn");
            static ILog _logerror = LogManager.GetLogger("ErrorLog");
            static ILog _logfatal = LogManager.GetLogger("Fatal");
            static LogHelper()
            {
                log4net.Config.XmlConfigurator.Configure();
            }
    
            public static void Info(string msg)
            {
                _loginfo.Info(msg);
            }
    
            public static void Warn(string msg)
            {
                _logwarn.Warn(msg);
            }
    
            public static void Error(string msg)
            {
                _logerror.Error(msg);
            }
            public static void Error(string errtitle, Exception ex)
            {
                _logerror.Error(errtitle, ex);
            }
            public static void Fatal(string msg)
            {
                _logfatal.Fatal(msg);
            }
        }

      4、使用

    LogHelper.Info("内容不正确");
    LogHelper.Error("Post方法运行错误", ex);

    最终会出现两个文件且error记录都在error中info中无error记录:

    ========================这是个害羞的分割线============================

    后面经过测试发现按照之前的配置Info信息被过滤掉了,只生成了普通日志文件,但内容为空,因此配置有问题,改配置。

    去掉两个append中的 filter。

    去掉root中的内容。

    添加两个logger。

  • 相关阅读:
    关于QQ秀
    c#重点知识解答(五) 选择自 masterall 的 Blog
    c#.net常用函数和方法集 选择自 fineflyak 的 Blog
    JavaScript 中 substr 和 substring的区别
    C#重点知识详解(二) 选择自 masterall 的 Blog
    c#重点知识详解(六) 选择自 masterall 的 Blog
    转:一个男孩的自白
    win2003端口映射2003的路由与远程访问,做端口映射(转)
    渗透笔记(转载)
    win下配置的Apache+PHP+MySQL绿色版本(转)
  • 原文地址:https://www.cnblogs.com/zhangs1986/p/6472436.html
Copyright © 2011-2022 走看看