Ejemplo n.º 1
0
        public override void TraceEvent(TraceEventCache eventCache, string source, TraceEventType eventType, int id, string format, params object[] args)
        {
            switch ((MySqlTraceEventType)id)
            {
            case MySqlTraceEventType.ConnectionOpened:
                var conStr        = args[1].ToString();
                var conStrBuilder = new MySqlConnectionStringBuilder(conStr);
                var metaInfo      = new MySqlMetaInfo
                {
                    ConnectionString = conStr,
                    DbName           = conStrBuilder.Database,
                    DbServer         = conStrBuilder.Server
                };
                CacheMySqlMetaInfo((long)args[0], metaInfo);
                break;

            case MySqlTraceEventType.ConnectionClosed:
                break;

            case MySqlTraceEventType.QueryOpened:
                string sql = args[2]?.ToString();
                BeforeSqlExecute(GetMySqlMetaInfo((long)args[0]), sql);
                break;

            case MySqlTraceEventType.ResultOpened:
                break;

            case MySqlTraceEventType.ResultClosed:
                break;

            case MySqlTraceEventType.QueryClosed:
                AfterSqlExecute();
                break;

            case MySqlTraceEventType.StatementPrepared:
                break;

            case MySqlTraceEventType.StatementExecuted:
                break;

            case MySqlTraceEventType.StatementClosed:
                break;

            case MySqlTraceEventType.NonQuery:
                break;

            case MySqlTraceEventType.UsageAdvisorWarning:
                break;

            case MySqlTraceEventType.Warning:
                break;

            case MySqlTraceEventType.Error:
                ErrorSqlExecute(args[2]?.ToString());
                break;

            case MySqlTraceEventType.QueryNormalized:
                break;
            }
        }
Ejemplo n.º 2
0
 private void CacheMySqlMetaInfo(long key, MySqlMetaInfo metaInfo)
 {
     if (!_metaInfoCache.ContainsKey(key))
     {
         _metaInfoCache.Add(key, metaInfo);
     }
 }
Ejemplo n.º 3
0
        public void BeforeSqlExecute(MySqlMetaInfo metaInfo, string sql)
        {
            if (metaInfo == null || string.IsNullOrEmpty(sql))
            {
                return;
            }
            var opration = sql.Split(' ').First();
            var context  = _tracingContext.CreateExitSegmentContext(opration, metaInfo.DbServer);

            context.Span.SpanLayer = Tracing.Segments.SpanLayer.DB;
            context.Span.Component = Common.Components.MYSQL;
            context.Span.AddTag(Common.Tags.DB_TYPE, "MySql");
            context.Span.AddTag(Common.Tags.DB_INSTANCE, metaInfo.DbName);
            context.Span.AddTag(Common.Tags.DB_STATEMENT, sql);
        }