NLog for Linq2Sql

NLog for Linq2Sql


sql linq automatically generated command may not be efficient, they need log out, and then adjusted.

Application DataContext properties Log: System.IO.TextWriter plus NLog

Synthesis of a useful class

using System.IO;
using NLog;
using System.ComponentModel;
using System.Text;

namespace Common.NMail.Core {
    /// 
    /// 包装NLog.Logger对象为TextWriter类型
    /// 以利LinqToSql的Log用.
    /// 
    public class NLogTextWriter : TextWriter {
        /// 
        /// 日志对象
        /// proxy pattern::有需要时再建立
        /// 
        private Logger _logger = null;
        /// 
        /// 日志层级::默认为Info
        /// 
   
   
    
        /// 
   
        private LogLevel _level = NLog.LogLevel.Info;
        /// 
        /// 默认建构子, 自动产生日志对象
        /// 
        public NLogTextWriter() {            
        }

        /// 
        /// 默认建构子, 自动产生日志对象, 并修改默认的日志层级
        /// 
        public NLogTextWriter(NLog.LogLevel level) {
            if (level != null) {
                _level = level;
            }
        }

        /// 
        /// 使用已建立的日志对象
        /// 
        /// 
        public NLogTextWriter(NLog.Logger logger) {
            _logger = logger;            
        }
        /// 
        /// 使用已建立的日志对象, 并修改默认的日志层级
        /// 
        /// 
        /// 
        public NLogTextWriter(NLog.Logger logger,NLog.LogLevel level) {
            _logger = logger;
            _level = level;
        }
        /// 
  
  
   
        public override void Write(char[] buffer) {
            string value = new string(buffer);
            Write(value);
        }
        /// 
  
   
    
        public override void Write(char[] buffer, int index, int count) {
            Write(new string(buffer, index, count));
        }
        /// 
  
    
     
        public override void WriteLine(char[] buffer) {
            Write(new StringBuilder(new string(buffer)).Append("rn").ToString());
        }
        /// 
  
     
      
        public override void WriteLine(char[] buffer, int index, int count) {
            Write(new StringBuilder(new string(buffer, index, count)).Append("rn").ToString());
        }
        /// 
  
      
        public override void WriteLine(string value) { Write(new StringBuilder(value).Append("rn").ToString()); } /// 
       
         public override void Write(string value) { if(_logger==null){ _logger = LogManager.GetCurrentClassLogger(); } _logger.Log(_level, value); } /// 
         /// (只读)系统输出文字的编码方式 ///  public override System.Text.Encoding Encoding { get { return System.Text.Encoding.Default; } } } } 
       
      
     
    
   
  

Original: Big Box  NLog for Linq2Sql


Guess you like

Origin www.cnblogs.com/chinatrump/p/11505534.html