log4net 普通文件、数据库日志

1. 右键项目使用 NuGet 安装 log4net

2. 新建 log4net.config 文件

1. Error 日志
2. Info 日志
3. 自定义日志
4. 数据库日志(含自定义字段

注意:

log4net.config 根目录:

log4net 普通文件、数据库日志_第1张图片

log4net 普通文件、数据库日志_第2张图片

2-1 Error 日志

  
    
    
    
    
    
    
    
      
      
      
      
    
  

  
    
    
  

2-2 Info 日志

  
    
    
    
    
    
    
    
    
      
    
  

  
    
    
  

2-3 自定义日志

  
    
    
    
    
    
    
    
    
      
    
  

  
    
    
  

2-4 数据库日志

建议先将 官方数据库日志示例 跑通后,再加入自定义字段。

SqlServer :

CREATE TABLE [dbo].[Log] (
    [Id] [int] IDENTITY (1, 1) NOT NULL,
    [Date] [datetime] NOT NULL,
    [Thread] [varchar] (255) NOT NULL,
    [Level] [varchar] (50) NOT NULL,
    [Logger] [varchar] (255) NOT NULL,
    [Message] [varchar] (4000) NOT NULL,
    [Exception] [varchar] (2000) NULL,
    [job_code] [varchar] (100) NULL,
    [stream_id] [varchar] (100) NULL
)

配置说明:
log4net 普通文件、数据库日志_第3张图片

自定义类:

using log4net.Layout;
using log4net.Layout.Pattern;
using System;
using System.Collections.Generic;
using System.Linq;
using log4net.Core;
using System.IO;
using System.Reflection;

namespace RaysCloud.Common
{
    /// 
    /// 自定义日志类  对应数据库表字段
    /// 
    public class LogContent
    {
        public string job_code { get; set; }
        public string stream_id { get; set; }
    }

    public class CustomLoyout : PatternLayout
    {
        public CustomLoyout()
        {
            this.AddConverter("property", typeof(LogInfoPatternConverter));
        }
    }

    public class LogInfoPatternConverter : PatternLayoutConverter
    {
        protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
        {
            if (Option != null)
            {
                WriteObject(writer, loggingEvent.Repository, LookupProperty(Option, loggingEvent));
            }
            else
            {
                WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());
            }
        }

        /// 
        /// 反射获取传入日志对象的某个属性的值
        /// 
        /// 
        /// 
        /// 
        private object LookupProperty(string property, LoggingEvent loggingEvent)
        {
            object propertyValue = string.Empty;
            PropertyInfo propertyInfo = loggingEvent.MessageObject.GetType().GetProperty(property);

            if (property != null)
            {
                propertyValue = propertyInfo.GetValue(loggingEvent.MessageObject, null);
            }
            return propertyValue;
        }
    }
}

log4net 配置:


    
    
    
    
    
        
        
        
    
    
        
        
        
        
            
        
    
    
        
        
        
        
            
        
    
    
        
        
        
        
            
        
    
    
        
        
        
        
            
        
    
    
        
        
        
        
    
    
    
        
    
  

3.Web.config 配置

log4net 普通文件、数据库日志_第4张图片


    

4.Global.aspx

 protected void Application_Start()
 {
     log4net.Config.XmlConfigurator.Configure();    // log4net 配置
 }

5.LogHelper.cs

随便写的一个辅助类,可自行扩展

using System;

namespace RaysCloud.Common
{
    /// 
    /// 日志类
    /// 
    public class LogHelper
    {
        private static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
        private static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
        private static readonly log4net.ILog logmonitor = log4net.LogManager.GetLogger("logmonitor");
        private static readonly log4net.ILog log_db = log4net.LogManager.GetLogger("logadonet");

        /// 
        /// 错误日志
        /// 
        /// 错误信息
        /// 异常
        public static void Error(string errorMsg, Exception ex = null)
        {
            logerror.Error(errorMsg, ex);
        }
        /// 
        /// 普通日志
        /// 
        /// 信息
        public static void Info(string msg)
        {
            loginfo.Info(msg);
        }

        /// 
        /// 监控日志
        /// 
        /// 信息
        public static void Monitor(string msg)
        {
            logmonitor.Info(msg);
        }

        #region 写入日志到数据库  http://blog.csdn.net/kongwei521/article/details/52242319
        public static void ErrorToDB(object message, Exception ex = null)
        {
            log_db.Error(message, ex);
        }

        public static void InfoToDB(object message, Exception ex = null)
        {
            log_db.Info(message, ex);
        }
        #endregion

    }
}

6.日志截图:

log4net 普通文件、数据库日志_第5张图片

log4net 普通文件、数据库日志_第6张图片

源码:https://git.oschina.net/PoloN...

本文数据库日志参考于:http://blog.csdn.net/kongwei5...

你可能感兴趣的:(log4net,quartz)