private void OnCommStreamCreated(object sender, CommLogCreatedEventArgs args)
        {
            try
            {
                // 检查缓存池中元素的个数,超过阈值则记录。
                if (_logCache.Count > 500)
                {
                    LogUtility.Warning(string.Format("通信流日志缓存池的个数已达到 {0} 条!", _logCache.Count));
                }

                _logCache.AddProduct(args);
            }
            catch (Exception ex)
            {
                LogUtility.Error(ex);
            }
        }
Example #2
0
        /// <summary>
        /// 在全局消息总线上发布通信日志产生事件。
        /// </summary>
        protected void PublishCommLogCreateEvent(NodeType localType, uint localCode,
                                                 NodeType remoteType,
                                                 uint remoteCode, bool isIncoming, byte[] data)
        {
            try
            {
                if (!this.PublishCommLogCreated)
                {
                    return;
                }

                var args = new CommLogCreatedEventArgs(localType, localCode, remoteType, remoteCode, isIncoming, data);
                GlobalMessageBus.PublishCommLogCreated(args);
            }
            catch (Exception)
            {
            }
        }
        private ICommStreamLogWriter CreateStreamLogWriter(CommLogCreatedEventArgs args)
        {
            var localNodeName  = this.GetDeviceName(args.LocalNodeType, args.LocalNodeCode);
            var remoteNodeName = this.GetDeviceName(args.RemoteNodeType, args.RemoteNodeCode);

            var logPath = string.Format(@"{0}\L{1}.{2}_R{3}.{4}", LogSettings.CommLogBasePath, args.LocalNodeCode, localNodeName, args.RemoteNodeCode, remoteNodeName);
            var logKey  = string.Format("{0}{1}-{2}{3}", args.LocalNodeType, args.LocalNodeCode, args.RemoteNodeType, args.RemoteNodeCode);

            //
            var ipc = CommLogHelper.GetParserCode(args.LocalNodeType, args.RemoteNodeType, true);
            var opc = CommLogHelper.GetParserCode(args.LocalNodeType, args.RemoteNodeType, false);

            //
            var logSettings = LogFileSettings.CreateV11(logKey, logPath, ipc, opc);

            logSettings.FileNamePrefix  = GetFileNamePrefix(args.LocalNodeCode, localNodeName, args.RemoteNodeCode, remoteNodeName);
            logSettings.FileNameSuffix  = "";
            logSettings.ExpiredDays     = this.LogExpiredDays;
            logSettings.FileDescription = GetFileDescription(localNodeName, remoteNodeName);

            //
            return(CommStreamLogManager.CreateLogWriter(logSettings));
        }
Example #4
0
 /// <summary>
 /// 发布通信流日志产生事件。
 /// </summary>
 public static IMessageResponse PublishCommLogCreated(CommLogCreatedEventArgs args, object sender = null)
 {
     return(LocalMessageBus.Current.Publish(CommLogCreatedTopic, args, sender, false));
 }