c#_for project_

attribute:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ServiceStack.Redis;
namespace RedisMvcApp.Models
{
    public class MyExecptionAttribute : HandleErrorAttribute
    {
        //public static Queue<Exception> ExceptionQueue = new Queue<Exception>();//创建队列.
        public static IRedisClientsManager clientManager = new PooledRedisClientManager(new string[]{"127.0.0.1:6379"});
        public static IRedisClient redisClent = clientManager.GetClient();
        public override void OnException(ExceptionContext filterContext)
        {
          //将异常信息入队.
            //ExceptionQueue.Enqueue(filterContext.Exception);//将异常信息入队.
            redisClent.EnqueueItemOnList("errorException", filterContext.Exception.ToString());//将异常信息存储到Redis队列中了。
            filterContext.HttpContext.Response.Redirect("/error.html");
            base.OnException(filterContext);
        }
    }
}

gobal

using log4net;
using RedisMvcApp.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace RedisMvcApp
{
    // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
    // 请访问 http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            log4net.Config.XmlConfigurator.Configure();//获取Log4Net配置信息(配置信息定义在Web.config文件中)
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            //通过线程开启一个线程,然后不停的从队列中或数据
            string filePath = Server.MapPath("/Log/");
            ThreadPool.QueueUserWorkItem(o =>
            {
                while (true)
                {
                    try
                    {
                      //  if (MyExecptionAttribute.ExceptionQueue.Count > 0)
                        if (MyExecptionAttribute.redisClent.GetListCount("errorException") > 0)
                        {
                          //  Exception  ex= MyExecptionAttribute.ExceptionQueue.Dequeue();//从队列中拿出数据
                            string errorMsg = MyExecptionAttribute.redisClent.DequeueItemFromList("errorException");//从Redis队列中取出异常数据
                            //if (ex != null)
                            if(!string.IsNullOrEmpty(errorMsg))
                            {
                                //构建成一个完整的路径
                              //  string fileName = filePath + DateTime.Now.ToString("yyyy-MM-dd").ToString() + ".txt";
                                //string execptionMsg = ex.ToString();
                             //   File.AppendAllText(fileName, errorMsg, Encoding.Default);//将异常写到文件中。

                                ILog logger = LogManager.GetLogger("czbkError");
                                logger.Error(errorMsg);//将异常信息写到Log4Net中.

                            }
                            else
                            {
                                Thread.Sleep(30);
                            }
                        }
                        else
                        {
                            Thread.Sleep(30);//避免了CPU空转。
                        }
                    }
                    catch (Exception ex)
                    {
                        //MyExecptionAttribute.ExceptionQueue.Enqueue(ex);
                        MyExecptionAttribute.redisClent.EnqueueItemOnList("errorException", ex.ToString());
                    }
                }

            }, filePath);
        }
    }
}

log放在 app_start里面 可以防止被访问

c#_for project_,布布扣,bubuko.com

时间: 2024-10-27 09:39:36

c#_for project_的相关文章

反汇编逆向实例_For语句反汇编

反汇编逆向实例_For语句反汇编 by:比方 逆向反汇编第二章,For语句反汇编 示例代码: 1 #include"stdio.h" 2 1.int function(int a,int b) 3 2.{ 4 3. int c=a+b; 5 4. int i; 6 5. for(i=0;i<50;i++) 7 6. { 8 7. c=c+i; 9 8. } 10 9. return c; 11 10.} 12 11.void main() 13 12.{ 14 13. funct

流程控制语句_for嵌套

/* 语句嵌套形式,其实就是语句中还有语句 循环嵌套 如果发现图形有很多行,没行中有很多列 要使用嵌套循环,原理就是大圈套小圈 */ public class ForforDemo { public static void main(String[] args) { Forfor1(); } //结果是打印长方形,外循环控制行数,内循环控制的是每一行的列数 public static void Forfor1(){ for (int x =0;x<3 ;x++ ){ for (int y = 0

Python_03_字符串_数据类型_for循环_列表操作

个人笔记,仅作学习记录,如有错误烦请指正 字符串: str1 = "这是一个字符串" str2 = '这也是一个字符串' 一般字符串都需要用双引号或单引号引起来 在Python中双引号和单引号是一样的,但必须成对出现 msg = "i'm liming" # 此处因为字符串中包含单引号,所以外边用双引号引起来表示字符串内容 msg = """收到消息"i'm liming".""" #

python学习日志_for

几天前就开始学python了,终于学到循环了,写写日志方便日后查询 刚刚用if elif fof 完成的小游戏

Python学习作业之登陆接口_For

作业:编写登陆接口 要求: 输入正确则显示欢迎信息,输入错误三次则锁定. # Author:Bryce_Zhang username = "1" password = "2" for i in range(4):     users = input("users:")     pass1 = input("pass1:")     if users == username and pass1 == password:     

Shell命令_for

chmod 755 demo.sh ./demo.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 #!/bin/bash # Author:

17._for循环_for和if的嵌套使用的4个练习题

1 /* 2 2015年4月1日 10:16:41 3 目的:求1到100之间的奇数之和 4 5 6 */ 7 8 # include <stdio.h> 9 10 int main(void) 11 { 12 int i; 13 int sum = 0; 14 15 for (i=1; i<=100; ++i) 16 { 17 if (i%2 == 1) //判断i是否为奇数 18 sum += i; //也可写成 sum = sum + i; 19 20 } 21 22 printf

.Net基础篇_学习笔记_第六天_for循环语法_正序输出和倒序输出

for TAB  和 forr TAB 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 第六天_do_while循环 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 for (in

流程控制语句_for

for循环的格式: for (初始化表达式;循环条件表达式 ;循环后的操作表达式 ){  执行语句} public class ForDemo { public static void main(String[] args) { //int x = 3;只有程序读到这时才在内存中开辟空间,而且只要for循环结束内存空间就会被释放. //第一个只要是合法的表达式就行,第二个一定要是条件表达式 for (int x = 3; x<8 ; x++ ){ System.out.println("x