Esempio n. 1
0
        public static void LogCommandExecuted(
            [NotNull] this ISensitiveDataLogger logger,
            [NotNull] DbCommand command,
            long startTimestamp,
            long currentTimestamp)
        {
            Check.NotNull(logger, nameof(logger));
            Check.NotNull(command, nameof(command));

            if (logger.IsEnabled(LogLevel.Information))
            {
                var logParameterValues
                    = command.Parameters.Count > 0 &&
                      logger.LogSensitiveData;

                var logData = new DbCommandLogData(
                    command.CommandText.TrimEnd(),
                    command.CommandType,
                    command.CommandTimeout,
                    command.Parameters
                    .Cast <DbParameter>()
                    .Select(
                        p => new DbParameterLogData(
                            p.ParameterName,
                            logParameterValues ? p.Value : "?",
                            logParameterValues,
                            p.Direction,
                            p.DbType,
                            p.IsNullable,
                            p.Size,
                            p.Precision,
                            p.Scale))
                    .ToList(),
                    DeriveTimespan(startTimestamp, currentTimestamp));

                logger.Log(
                    LogLevel.Information,
                    (int)RelationalEventId.ExecutedCommand,
                    logData,
                    null,
                    (state, _) =>
                {
                    var elapsedMilliseconds = DeriveTimespan(startTimestamp, currentTimestamp);

                    return(RelationalStrings.RelationalLoggerExecutedCommand(
                               string.Format(
                                   CultureInfo.InvariantCulture,
                                   string.Format(CultureInfo.InvariantCulture, "{0:N0}", elapsedMilliseconds)),
                               state.Parameters
                               // Interpolation okay here because value is always a string.
                               .Select(p => $"{p.Name}={FormatParameter(p)}")
                               .Join(),
                               state.CommandType,
                               state.CommandTimeout,
                               Environment.NewLine,
                               state.CommandText));
                });
            }
        }
Esempio n. 2
0
        public static void LogCommandExecuted(
            [NotNull] this ISensitiveDataLogger logger,
            [NotNull] DbCommand command,
            long startTimestamp,
            long currentTimestamp)
        {
            Check.NotNull(logger, nameof(logger));
            Check.NotNull(command, nameof(command));

            if (logger.IsEnabled(LogLevel.Information))
            {
                var logParameterValues
                    = command.Parameters.Count > 0 &&
                      logger.LogSensitiveData;

                var logData = new DbCommandLogData(
                    command.CommandText.TrimEnd(),
                    command.CommandType,
                    command.CommandTimeout,
                    command.Parameters
                    .Cast <DbParameter>()
                    .ToDictionary(p => p.ParameterName, p => logParameterValues ? p.Value : "?"),
                    DeriveTimespan(startTimestamp, currentTimestamp));

                logger.Log(
                    LogLevel.Information,
                    (int)RelationalLoggingEventId.ExecutedCommand,
                    logData,
                    null,
                    (state, _) =>
                {
                    var elapsedMilliseconds = DeriveTimespan(startTimestamp, currentTimestamp);

                    return(RelationalStrings.RelationalLoggerExecutedCommand(
                               string.Format($"{elapsedMilliseconds:N0}"),
                               state.Parameters
                               .Select(kv => $"{kv.Key}='{FormatParameterValue(kv.Value)}'")
                               .Join(),
                               state.CommandType,
                               state.CommandTimeout,
                               Environment.NewLine,
                               state.CommandText));
                });
            }
        }