public StopDatabaseTracingResult StopDatabaseTracing(StopDatabaseTracingParameters parameters) { using (TransactionScope scope = new TransactionScope()) { StopDatabaseTracingResult result = null; using (IDbConnection connection = new DbConnection(ConnectionString)) { connection.Open(); using (IDbCommand command = connection.CreateCommand()) { command.CommandText = "Delphi.Stop_Log"; ((OracleCommand)command).BindByName = true; foreach (IDbDataParameter parameter in StopDatabaseTracingTranslator.TranslateParameters(parameters)) { command.Parameters.Add(parameter); } command.Prepare(); command.CommandType = CommandType.StoredProcedure; command.ExecuteNonQuery(); result = new StopDatabaseTracingResult(); } } scope.Complete(); return(result); } }
public void Execute(EnableDatabaseTracingParameters parameters) { ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings[schemaName]; string connectionString = settings.ConnectionString; if (parameters.IsTracingEnabled) { TraceContext context = TraceContext.CreateContext( ApplicationContext.Current.UserId, ApplicationContext.Current.TerminalId, ApplicationContext.Current.SessionId); context.IsTracingEnabled = true; ITracingDao tracingDao = PolicyInjection.Create <TracingDao, ITracingDao>(connectionString); StartDatabaseTracingParameters startTracingParameters = new StartDatabaseTracingParameters(); string userId = ApplicationContext.Current.UserId; if ((userId.Contains('\\') || userId.Contains('/'))) { string[] userIdParts = userId.Split(new char[] { '\\', '/' }); userId = userIdParts[1]; } startTracingParameters.UserId = userId; startTracingParameters.TerminalId = ApplicationContext.Current.TerminalId; startTracingParameters.WriteHeader = true; tracingDao.StartDatabaseTracing(startTracingParameters); } else { TraceContext context = TraceContext.GetContext( ApplicationContext.Current.UserId, ApplicationContext.Current.TerminalId, ApplicationContext.Current.SessionId); if (context != null) { context.IsTracingEnabled = false; ITracingDao tracingDao = PolicyInjection.Create <TracingDao, ITracingDao>(connectionString); StopDatabaseTracingParameters stopTracingParameters = new StopDatabaseTracingParameters(); stopTracingParameters.WriteHeader = true; tracingDao.StopDatabaseTracing(stopTracingParameters); } } }
public static IList <IDbDataParameter> TranslateParameters(StopDatabaseTracingParameters parameters) { IList <IDbDataParameter> parameterList = new List <IDbDataParameter>(); IDbDataParameter dbParameter; dbParameter = new OracleParameter(); dbParameter.ParameterName = "WriteHeader_I"; dbParameter.DbType = DbTypeConvertor.ConvertToDbType(typeof(string)); dbParameter.Direction = ParameterDirection.Input; if (parameters.WriteHeader) { dbParameter.Value = "1"; } else { dbParameter.Value = "0"; } parameterList.Add(dbParameter); return(parameterList); }
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) { IMethodReturn msg = null; TraceContext context = null; if (ApplicationContext.Current != null) { context = TraceContext.GetContext( ApplicationContext.Current.UserId, ApplicationContext.Current.TerminalId, ApplicationContext.Current.SessionId); } if (context != null && context.IsTracingEnabled) { lock (context) { using (ITransactionScope scope = new TransactionScope()) { string userId = context.UserId; if ((userId.Contains('\\') || userId.Contains('/'))) { string[] userIdParts = userId.Split(new char[] { '\\', '/' }); userId = userIdParts[1]; } ITracingDao tracingDao = new TracingDao(connectionString); StartDatabaseTracingParameters startParameters = new StartDatabaseTracingParameters(); startParameters.TerminalId = context.TerminalId; startParameters.UserId = userId; startParameters.WriteHeader = false; tracingDao.StartDatabaseTracing(startParameters); try { msg = getNext()(input, getNext); } finally { StopDatabaseTracingParameters stopParameters = new StopDatabaseTracingParameters(); stopParameters.WriteHeader = false; tracingDao.StopDatabaseTracing(stopParameters); } try { scope.Complete(); } catch (InvalidOperationException) { } } } } else { msg = getNext()(input, getNext); } return(msg); }