• Log4Net根据不同的Logger名称,生成日志文件到不同的地方。


    1.定义日志记录类

       1:   public class Log4NetLogger : ISystemLogger
       2:      {
       3:          static log4net.ILog securityLogger = log4net.LogManager.GetLogger("SecurityLog");
       4:          static log4net.ILog sysLogger = log4net.LogManager.GetLogger("SystemLog");
       5:   
       6:          public SystemLogLevel LogLevel
       7:          {
       8:              get
       9:              {
      10:                  if (ApplicationManager.SystemInfo.SystemLogLevel.HasValue)
      11:                  {
      12:                      return (SystemLogLevel)ApplicationManager.SystemInfo.SystemLogLevel;
      13:                  }
      14:                  else
      15:                  {
      16:                      return SystemLogLevel.None;
      17:                  }
      18:              }
      19:              set
      20:              {
      21:                  ApplicationManager.UpdateLogLevel(value);
      22:              }
      23:          }
      24:   
      25:          /// <summary>
      26:          /// 输出错误级别日志
      27:          /// </summary>
      28:          /// <param name="message">输出的消息</param>
      29:          public void Error(string message)
      30:          {
      31:              //记录日志
      32:              writeSysLog(SystemLogLevel.Error, message);
      33:          }
      34:   
      35:          /// <summary>
      36:          /// 输出警告级别日志
      37:          /// </summary>
      38:          /// <param name="message">输出的消息</param>
      39:          public void Warning(string message)
      40:          {
      41:              //记录日志
      42:              writeSysLog(SystemLogLevel.Warning, message);
      43:          }
      44:   
      45:          /// <summary>
      46:          /// 输出信息级别日志
      47:          /// </summary>
      48:          /// <param name="message">输出的消息</param>
      49:          public void Info(string message)
      50:          {
      51:              //记录日志
      52:              writeSysLog(SystemLogLevel.Info, message);
      53:          }
      54:   
      55:          /// <summary>
      56:          /// 输出调试级别日志
      57:          /// </summary>
      58:          /// <param name="message">输出的消息</param>
      59:          public void Debug(string message)
      60:          {
      61:              //记录日志
      62:              writeSysLog(SystemLogLevel.Debug, message);
      63:          }
      64:   
      65:          /// <summary>
      66:          /// 记录个资法案日志
      67:          /// </summary>
      68:          public void SecurityLog(string message)
      69:          {
      70:              writeSecurityLog(message);
      71:          }
      72:   
      73:          /// <summary>
      74:          /// 记录系统日志
      75:          /// </summary>
      76:          /// <param name="logLevel">日志级别</param>
      77:          /// <param name="message">输出的消息</param>
      78:          private void writeSysLog(SystemLogLevel logLevel, string message)
      79:          {
      80:              string format = "ClientIP={0},CurrentUser={1},Message={2}";
      81:              ClientInfo clientInfo = WebServerHelper.CurrentClientInfo;
      82:              string fullMsg = string.Format(format, clientInfo.UserHostAddress, WebServerHelper.CurrentUserID, message);
      83:              if (LogLevel >= logLevel)
      84:              {
      85:                  switch (logLevel)
      86:                  {
      87:                      case SystemLogLevel.Debug:
      88:                          sysLogger.Debug(fullMsg);
      89:                          break;
      90:                      case SystemLogLevel.Error:
      91:                          sysLogger.Error(fullMsg);
      92:                          break;
      93:                      case SystemLogLevel.Info:
      94:                          sysLogger.Info(fullMsg);
      95:                          break;
      96:                      case SystemLogLevel.Warning:
      97:                          sysLogger.Warn(fullMsg);
      98:                          break;
      99:                  }
     100:              }
     101:          }
     102:          /// <summary>
     103:          /// 记录个资法案日志
     104:          /// </summary>
     105:          /// <param name="message"></param>
     106:          private void writeSecurityLog(string message)
     107:          {
     108:              string format = "ClientIP={0},CurrentUser={1},System={2},Message={3}";
     109:              ClientInfo clientInfo = WebServerHelper.CurrentClientInfo;
     110:              string fullMsg = string.Format(format, clientInfo.UserHostAddress, WebServerHelper.CurrentUserID,ApplicationManager.SystemCode, message);
     111:              securityLogger.Info(fullMsg);
     112:          }
     113:      }

    2.设置配制文件:

       1:  <configSections>        
       2:          <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
       3:  </configSections>
       4:  <log4net>
       5:          <appender name="SystemLogAppender" type="log4net.Appender.RollingFileAppender">
       6:              <file value="OA_Log/App_Log/" />
       7:              <appendToFile value="true" />
       8:              <rollingStyle value="Date" />
       9:              <staticLogFileName value="false" />
      10:              <datePattern value="yyyyMMdd&quot;.log&quot;" />
      11:              <layout type="log4net.Layout.PatternLayout">
      12:                  <!--输出格式-->
      13:                  <conversionPattern value="%date %-5level %message%newline" />
      14:              </layout>
      15:              <filter type="log4net.Filter.LoggerMatchFilter">
      16:                  <loggerToMatch value="SystemLog" />               
      17:              </filter>
      18:              <filter type="log4net.Filter.DenyAllFilter" />
      19:          </appender>
      20:          <appender name="SecurityLogAppender" type="log4net.Appender.RollingFileAppender">
      21:              <file value="OA_Log/Access_Log/" />
      22:              <appendToFile value="true" />
      23:              <rollingStyle value="Date" />
      24:              <staticLogFileName value="false" />
      25:              <datePattern value="yyyyMMdd&quot;.log&quot;" />
      26:              <layout type="log4net.Layout.PatternLayout">
      27:                  <!--输出格式-->
      28:                  <conversionPattern value="%date %-5level %message%newline" />
      29:              </layout>
      30:              <filter type="log4net.Filter.LoggerMatchFilter">
      31:                  <loggerToMatch value="SecurityLog" />               
      32:              </filter>
      33:              <filter type="log4net.Filter.DenyAllFilter" />
      34:          </appender>        
      35:          <root>
      36:              <level value="ALL"/>            
      37:              <appender-ref ref="SystemLogAppender"/>
      38:              <appender-ref ref="SecurityLogAppender"/>            
      39:          </root>       
      40:  </log4net>

    3.在Global.asax的Application_Start事件中加入初始化代码:

       1:   protected void Application_Start(object sender, EventArgs e)
       2:   {
       3:              log4net.Config.XmlConfigurator.Configure();         
       4:   }
  • 相关阅读:
    多任务拷贝小案例
    进程池
    进程间的通信
    互斥锁
    创建函数/类的线程
    udp/tcp流程
    发布模块
    私有属性/方法的访问
    深入了解jQuery之整体架构
    (转)前端面试题
  • 原文地址:https://www.cnblogs.com/leleroyn/p/3558843.html
Copyright © 2020-2023  润新知