您的位置:威尼斯官方网站 > 威尼斯正规官网 > 小实例介绍

小实例介绍

发布时间:2019-09-24 04:06编辑:威尼斯正规官网浏览(117)

    驷不及舌能力:

    log4net-生成日志。

    ActiveMQ-生成日志的时候发送音信,并实时监督检查日志。

    Signal库罗德-将ActiveMQ监察和控制的日志实时展现到浏览器上,而不用刷新浏览器。

    小实例介绍

    左边手命名称叫系联合,左侧命名字为系统二

    系统一是变化日志的小工具,系统二依照变化的日记实时呈现数据,如若E中华VROPRADO级别的日志当先50条则实时显示警报。

    图片 1

    系统一重大代码分析:

    1.音信队列类-发送新闻的主意

    public class ActiveMQHelper
    {

    private IConnectionFactory factory;

    /// <summary>

    /// 初始化ActiveMQ工厂

    /// </summary>

    public ActiveMQHelper()

    {

    try

    {

    //开首化学工业厂,这里暗中同意的U奥迪Q5L是无需修改的

    factory = new ConnectionFactory("tcp://localhost:61616");

    }

    catch(Exception ex)

    {

    new LogHelper(typeof(ActiveMQHelper)).Fatal(string.Format("新闻队列服务器起首化战败"),ex);

    }

    }

    /// <summary>

    /// 发送信息方法

    /// </summary>

    /// <param name="msg"></param>

    public void CreateConnection(string msg)

    {

    //通过工厂创设连接

    using (IConnection connection = factory.CreateConnection

    {

    //通过连日成立Session会话

    using (ISession session = connection.CreateSession

    {

    //通过对话创造生产者,方法里面new出来的是MQ中的Queue

    IMessageProducer prod = session.CreateProducer(new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("LogsQueue"));

    //创造叁个发送的音讯对象

    ITextMessage message = prod.CreateTextMessage();

    //给那一个指标赋实际的消息

    message.Text = msg;

    //设置消息对象的天性,那个比较重大哦,是Queue的过滤条件,也是P2P音讯的独一内定属性

    message.Properties.SetString("filter", "log");

    //生产者把消息发送出去,多少个枚举参数MsgDeliveryMode是不是长链,MsgPriority音信优先等第,发送最小单位,当然还应该有别的重载

    prod.Send(message, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);

    }

    }

    }

    }

    2.生成error日志的时候发送一条新闻

    图片 2

    系统二第一代码剖析:

    1.页面代码

    SignalLacrosse简要介绍:浏览器之所以能不刷新而事实加载数据,全靠Signal君越的功劳。后台动态生成javascript函数,页面上调用后台湾学生成的函数就能够。

    下图调用的是后台MyHub.cs类的构造函数,调用方法为var chat = $.connection.myHub,Signal昂Cora具体使用请自行检索相关质地。

    图片 3

    2.后台代码 MyHub.cs类:

    证实:上面郎窑红的一行代码就是动态变化的javascript动态函数

    Clients.All.addNewMessageToPage; //前台页面要调用的函数

    public class MyHub : Hub

    {

    public delegate void DelegateRevMessage(ITextMessage message);
    private static string logPath = ConfigHelper.GetAppSetting("logpath");

    public MyHub()
    {

    var index = new Random().Next;
    //创立连接工厂
    IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616");
    //通过工厂创设连接
    Apache.NMS.IConnection connection = factory.CreateConnection();
    //那个是接连的客商端名称标志
    connection.ClientId = "LogsQueueListener" index;
    //运维连接,监听的话要风雨无阻运行连接
    connection.Start();
    //通过延续创制三个对话
    ISession session = connection.CreateSession();
    //通过对话成立二个客商,这里便是Queue这种会话类型的监听参数设置
    IMessageConsumer consumer = session.CreateConsumer(new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("LogsQueue"), "filter='log'");
    //注册监听事件
    consumer.Listener = new MessageListener(consumer_Listener);

    }

    void consumer_Listener(IMessage message)
    {

    ITextMessage msg = (ITextMessage)message;
    DelegateRevMessage delegateRev = RevMessage;

    IAsyncResult result = delegateRev.BeginInvoke(msg, null, null);
    delegateRev.EndInvoke;

    }

    /// <summary>
    /// 音讯队列实时监察和控制的主意
    /// </summary>
    /// <param name="message"></param>
    public void RevMessage(ITextMessage message)
    {

    //message.Text : 此值为音信队列中的值
    List<LogInfoModel> list = this.Analysis(DateTime.Now);
    if (list != null && list.Count > 0)
    {

    var fatalList = list.Where(x => x.Level.ToLower() == LevelEnum.FATAL.AsString().ToLower.ToList();
    var errorList = list.Where(x => x.Level.ToLower() == LevelEnum.ERROR.AsString().ToLower.ToList();

    /*
    * 此处能够依附日志等级及日志数量,管理警报操作。
    * 举个例子if(fatalList.Count>0){//发邮件;//微信提示;//发短信等} //假设有fatal等第的日志则随即警报;
    * 也许if(errorList.Count>50){//发邮件;//微信提示;//发短信等} //假设error级其余日记超越50条则随即警报;
    * **/

    var json = new { fatalCount = fatalList.Count, errorCount = errorList.Count };
    Clients.All.addNewMessageToPage; //前台页面要调用的函数

    }

    }

    /// <summary>
    /// 依据日期获取当天的日记列表
    /// </summary>
    /// <param name="date"></param>
    /// <returns></returns>
    public List<LogInfoModel> Analysis(DateTime date)
    {

    var loganalysis = new LogAnalysisBll();
    var month = date.Month.ToString();
    var day = date.Day.ToString();
    month = month.Length == 1 ? "0" month : month;
    day = day.Length == 1 ? "0" day : day;

    //依据日志路线深入分析日志,获取列表
    var list = loganalysis.GetLog(string.Format("{4}{0}\{1}\{2}\{3}.log", date.Year, month, date.Day, date.ToString("yyyyMMdd"), logPath));
    return list;

    }

    }

    本文由威尼斯官方网站发布于威尼斯正规官网,转载请注明出处:小实例介绍

    关键词:

上一篇:Metal专辑也可以关注我个人的简书账号

下一篇:没有了