log4net 保存日志到本地

在项目中记录日志是个不错习惯,可以查看项目运行状况

具体使用

1.添加引用

log4net 保存日志到本地_第1张图片

2.新增log4net配置文件



  
  
    
    
  
  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
      
    
    
      
      
    
  
  

3.如果是cs项目在 App.config 配置 bs在Web.config配置 方法一样

此处CS结构 App.config 配置文件



  
    
    

4.新建类 Log

using log4net;
using System;
using System.Collections.Generic;
using System.Text;

namespace Laboratory
{
    /// 
    /// 日志
    /// 
    public class Log
    {
        /// 
        /// log4net接口
        /// 
        private ILog logger;

        /// 
        /// 构造函数
        /// 
        /// 日志操作对象
        public Log(ILog log)
        {
            this.logger = log;
        }

        /// 
        /// 错误日志
        /// 
        public void Error(object message)
        {
            this.logger.Error(message);
        }
    }
}

5.新建工厂类 LogFactory

using log4net;
using System;
using System.Collections.Generic;
using System.Text;

namespace Laboratory
{
    public class LogFactory
    {
        /// 
        /// 构造函数
        /// 
        static LogFactory()
        {
            //配置文件加载进来
            log4net.Config.XmlConfigurator.Configure();
        }

        /// 
        /// 获取日志操作对象
        /// 
        /// 名字
        /// 
        public static Log GetLogger(string str)
        {
            return new Log(LogManager.GetLogger(str));
        }
    }
}

6.新建类 LogFormat(这个根据自己项目情况 可以在使用的位置直接格式化,新建类是为了方便扩展和管理)

using System;
using System.Collections.Generic;
using System.Text;

namespace Laboratory
{
    public class LogFormat
    {
        public static string ErrorFormat(Exception ex)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("1.主机IP:   >>>  " + Utils.GetLoctionIp() + "\r\n");
            builder.Append("2.时间:     >>>  " + DateTime.Now.ToString() + "\r\n");
            builder.Append("3.异常类型: >>>  " + ex.GetType().Name + "\r\n");
            builder.Append("4.异常信息: >>>  " + ex.Message + "\r\n");
            builder.Append("4.堆栈信息: >>>  " + ex.StackTrace + "\r\n");
            builder.Append("---------------------------------------------------------------------------------------------------------------\r\n");
            return builder.ToString();
        }
    }
}

7.调用例子(CS项目全局异常处理)

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Text;

namespace Laboratory
{
    internal static class Program
    {
        /// 
        /// 应用程序的主入口点。
        /// 
        [STAThread]
        private static void Main()
        {
            //设置应用程序处理异常方式:ThreadException处理
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            //处理UI线程异常
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            //处理非UI线程异常
            // AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FrmMain());
        }

        private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            // MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            var log = LogFactory.GetLogger("化验室同步程序");
            string msg = LogFormat.ErrorFormat(e.Exception);
            log.Error(msg);
        }

        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            //MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            var log = LogFactory.GetLogger("化验室同步程序");
            string msg = LogFormat.ErrorFormat((Exception)e.ExceptionObject);
            log.Error(msg);
        }   
    }
}

8.运行结果

log4net 保存日志到本地_第2张图片

log4net 保存日志到本地_第3张图片

你可能感兴趣的:(.Net)