Exemple #1
0
        protected virtual void WriteError(Exception exception, ErrorIds errorIds, ErrorCategory errorCategory, object targetObject, bool throwTerminatingError = false)
        {
            var record = new ErrorRecord(exception, errorIds.ToString(), errorCategory, targetObject);

            PowerShellLog.Error($"'{errorIds}' (Category: {errorCategory}) error encountered on object. ", exception);
            if (throwTerminatingError)
            {
                ThrowTerminatingError(record);
            }
            WriteError(record);
        }
Exemple #2
0
        public virtual void WriteError(Type exceptionType, string error, ErrorIds errorIds, ErrorCategory errorCategory, object targetObject, bool throwTerminatingError = false)
        {
            var exceptionInstance = (Exception)Activator.CreateInstance(exceptionType, error);
            var record            = new ErrorRecord(exceptionInstance, errorIds.ToString(), errorCategory, targetObject);

            if (throwTerminatingError)
            {
                ThrowTerminatingError(record);
            }

            WriteError(record);
        }
Exemple #3
0
        public async Task <bool> InsertOrUpdateAsync(Error error)
        {
            if (ErrorIds.ContainsKey(error.Id))
            {
                await UpdateAsync(error);

                return(false); // In update state not necessary to check cache size
            }

            await InsertAsync(error);

            return(true); // New error added to database, so need to check cache size
        }
Exemple #4
0
        public async Task UpdateAsync(Error error)
        {
            // If error is not exist in list or error state is now at unhandled exception state then exit
            if (!ErrorIds.ContainsKey(error.Id) || !ErrorIds[error.Id])
            {
                return;
            }

            using (var sqlConn = new SqlCeConnection(ConnectionString))
                using (var cmd = sqlConn.CreateCommand())
                {
                    cmd.CommandText =
                        string.Format("UPDATE [ErrorLog] SET [DuplicateNo] = [DuplicateNo] + 1 {0} WHERE ErrorId = @id",
                                      error.IsHandled ? "" : ", [IsHandled] = @isHandled, [StackTrace] = @stackTrace");

                    //
                    // Add parameters to command, which will be passed to the stored procedure
                    cmd.Parameters.AddWithValue("@id", error.Id);
                    if (!error.IsHandled) // Just in Unhandled Exceptions
                    {
                        cmd.Parameters.AddWithValue("@isHandled", error.IsHandled);
                        cmd.Parameters.AddWithValue("@stackTrace", SubLimitString(error.StackTrace));
                    }

                    try
                    {
                        await sqlConn.OpenAsync();

                        await cmd.ExecuteNonQueryAsync();

                        ErrorIds[error.Id] = error.IsHandled;
                    }
                    finally
                    {
                        sqlConn.Close();
                    }
                }
        }
        protected virtual void WriteError(Type exceptionType, string error, ErrorIds errorIds, ErrorCategory errorCategory, object targetObject, bool throwTerminatingError = false)
        {
            var exceptionInstance = (Exception)Activator.CreateInstance(exceptionType, error);

            WriteError(exceptionInstance, errorIds, errorCategory, targetObject, throwTerminatingError);
        }
Exemple #6
0
        public async Task InsertAsync(Error error)
        {
            using (var sqlConn = new SqlCeConnection(ConnectionString))
                using (var cmd = sqlConn.CreateCommand())
                {
                    cmd.CommandText = @"INSERT  INTO [ErrorLog]
					   ([ErrorId]
                       ,[ServerDateTime]
					   ,[Host]
					   ,[User]
					   ,[IsHandled]
					   ,[Type]
					   ,[AppName]
					   ,[CurrentCulture]
					   ,[CLRVersion]
					   ,[Message]
					   ,[Source]
					   ,[StackTrace]
					   ,[ModuleName]
					   ,[MemberType]
					   ,[Method]
					   ,[Processes]
					   ,[ErrorDateTime]
					   ,[OS]
					   ,[IPv4Address]
					   ,[MACAddress]
					   ,[HResult]
					   ,[Line]
                       ,[Column]
                       ,[ScreenCapture]
					   ,[DuplicateNo]
                       ,[Data])
            VALUES  ( 
                        @Id
                       ,@ServerDateTime
					   ,@Host
					   ,@User
					   ,@IsHandled
					   ,@Type
					   ,@AppName
					   ,@CurrentCulture
					   ,@CLRVersion
					   ,@Message
					   ,@Source
					   ,@StackTrace
					   ,@ModuleName
					   ,@MemberType
					   ,@Method
					   ,@Processes
					   ,@ErrorDateTime
					   ,@OS
					   ,@IPv4Address
					   ,@MACAddress
					   ,@HResult
					   ,@Line
                       ,@Column
                       ,@Snapshot
					   ,@Duplicate
                       ,@Data
                    )";

                    //
                    // Add parameters to command, which will be passed to the stored procedure
                    cmd.Parameters.AddWithValue("@Id", error.Id);
                    cmd.Parameters.AddWithValue("@ServerDateTime", error.ServerDateTime);
                    cmd.Parameters.AddWithValue("@Host", error.Host);
                    cmd.Parameters.AddWithValue("@User", error.User);
                    cmd.Parameters.AddWithValue("@IsHandled", error.IsHandled);
                    cmd.Parameters.AddWithValue("@Type", error.ErrorType);
                    cmd.Parameters.AddWithValue("@AppName", error.AppName);
                    cmd.Parameters.AddWithValue("@CurrentCulture", error.CurrentCulture);
                    cmd.Parameters.AddWithValue("@CLRVersion", error.ClrVersion);
                    cmd.Parameters.AddWithValue("@Message", error.Message);
                    cmd.Parameters.AddWithValue("@Source", error.Source ?? "Source Not Found");
                    cmd.Parameters.AddWithValue("@StackTrace", SubLimitString(error.StackTrace));
                    cmd.Parameters.AddWithValue("@ModuleName", error.ModuleName);
                    cmd.Parameters.AddWithValue("@MemberType", error.MemberType);
                    cmd.Parameters.AddWithValue("@Method", error.Method);
                    cmd.Parameters.AddWithValue("@Processes", SubLimitString(error.Processes));
                    cmd.Parameters.AddWithValue("@ErrorDateTime", error.ErrorDateTime);
                    cmd.Parameters.AddWithValue("@OS", error.OS);
                    cmd.Parameters.AddWithValue("@IPv4Address", error.IPv4Address);
                    cmd.Parameters.AddWithValue("@MACAddress", error.MacAddress);
                    cmd.Parameters.AddWithValue("@HResult", error.HResult);
                    cmd.Parameters.AddWithValue("@Line", error.LineColumn.Line);
                    cmd.Parameters.AddWithValue("@Column", error.LineColumn.Column);
                    cmd.Parameters.AddWithValue("@Duplicate", error.Duplicate);
                    cmd.Parameters.AddWithValue("@Data", SubLimitString(error.Data));
                    if (error.Snapshot == null)
                    {
                        cmd.Parameters.AddWithValue("@Snapshot", DBNull.Value);
                    }
                    else
                    {
                        cmd.Parameters.AddWithValue("@Snapshot", error.Snapshot.ToBytes());
                    }

                    try
                    {
                        await sqlConn.OpenAsync();

                        await cmd.ExecuteNonQueryAsync();

                        ErrorIds.Add(error.Id, error.IsHandled);
                    }
                    finally
                    {
                        sqlConn.Close();
                    }
                }
        }