public override object InsertEvent(AuditEvent auditEvent) { var fileName = GetFullPath($"Log{Guid.NewGuid()}.json"); File.WriteAllText(fileName, auditEvent.ToJson()); return(fileName); }
private void LogAudit(AuditEvent auditEvent, object eventId) { var logger = GetLogger(auditEvent); var level = GetLogLevel(auditEvent); var value = auditEvent.ToJson(); switch (level) { case Microsoft.Extensions.Logging.LogLevel.Debug: logger.Debug(value); break; case Microsoft.Extensions.Logging.LogLevel.Warning: logger.Warning(value); break; case Microsoft.Extensions.Logging.LogLevel.Error: logger.Error(value); break; case Microsoft.Extensions.Logging.LogLevel.Critical: logger.Fatal(value); break; case Microsoft.Extensions.Logging.LogLevel.Information: default: logger.Information(value); break; } }
private byte[] SerializeEvent(AuditEvent auditEvent) { if (CustomSerializer != null) { return(CustomSerializer.Invoke(auditEvent)); } return(Encoding.UTF8.GetBytes(auditEvent.ToJson())); }
public override async Task ReplaceEventAsync(object eventId, AuditEvent auditEvent) { var fileName = GetFullPath(eventId.ToString()); await Task.Run(() => { File.WriteAllText(fileName, auditEvent.ToJson()); }); }
// async implementation: public override async Task <object> InsertEventAsync(AuditEvent auditEvent) { var fileName = GetFullPath($"Log{Guid.NewGuid()}.json"); await Task.Run(() => { File.WriteAllText(fileName, auditEvent.ToJson()); }); return(fileName); }
public override void ReplaceEvent(object eventId, AuditEvent auditEvent) { var json = auditEvent.ToJson(); using (var ctx = new AuditContext(ConnectionStringBuilder?.Invoke(auditEvent))) { var cmdText = GetReplaceCommandText(auditEvent); ctx.Database.ExecuteSqlCommand(cmdText, new SqlParameter("@json", json), new SqlParameter("@eventId", eventId)); } }
public override object InsertEvent(AuditEvent auditEvent) { var json = auditEvent.ToJson(); using (var ctx = new Audit.SqlServer.Entities(_connectionString)) { var cmdText = string.Format("INSERT INTO [{0}] ([{1}]) OUTPUT INSERTED.[{2}] VALUES (@json)", _tableName, _jsonColumnName, _idColumnName); var eventId = ctx.Database.SqlQuery <long>(cmdText, new SqlParameter("@json", json)).FirstOrDefault(); return(eventId); } }
public override object InsertEvent(AuditEvent auditEvent) { var jsonParam = new MySqlParameter("@value", auditEvent.ToJson()); using (var cnn = new MySqlConnection(_connectionString)) { var cmd = GetInsertCommand(cnn, jsonParam); object id = cmd.ExecuteScalar(); return(id); } }
public override async Task ReplaceEventAsync(object eventId, AuditEvent auditEvent) { var jsonParam = new MySqlParameter("@value", auditEvent.ToJson()); var idParam = new MySqlParameter("@id", eventId); using (var cnn = new MySqlConnection(_connectionString)) { var cmd = GetReplaceCommand(cnn, jsonParam, idParam); await cmd.ExecuteNonQueryAsync(); } }
/// <summary> /// Asynchronously replaces an event into AmazonQLDB /// </summary> public override Task ReplaceEventAsync(object eventId, AuditEvent auditEvent) { var driver = QldbDriver.Value; var(insertDocumentId, tableName) = (ValueTuple <string, string>)eventId; return(driver.Execute(trx => trx.Execute( $@"UPDATE {tableName} AS e BY eid SET e = ? WHERE eid = ?", IonLoader.Default.Load(auditEvent.ToJson()), new ValueFactory().NewString(insertDocumentId)))); }
private Document CreateDocument(AuditEvent auditEvent, bool addCustomFields) { if (addCustomFields && CustomAttributes != null) { foreach (var attrib in CustomAttributes) { auditEvent.CustomFields[attrib.Key] = attrib.Value.Invoke(auditEvent); } } return(Document.FromJson(auditEvent.ToJson())); }
private object GetLogObject(AuditEvent auditEvent, object eventId) { if (LogMessageBuilder == null) { if (eventId != null) { auditEvent.CustomFields["EventId"] = eventId; } return(auditEvent.ToJson()); } return(LogMessageBuilder.Invoke(auditEvent, eventId)); }
public override void ReplaceEvent(object docId, AuditEvent auditEvent) { var client = GetClient(); var docUri = UriFactory.CreateDocumentUri(_database, _collection, docId.ToString()); Document doc; using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(auditEvent.ToJson()))) { doc = JsonSerializable.LoadFrom <Document>(ms); doc.Id = docId.ToString(); } client.ReplaceDocumentAsync(docUri, doc).Wait(); }
public override void ReplaceEvent(object eventId, AuditEvent auditEvent) { var json = auditEvent.ToJson(); using (var ctx = new AuditContext(_connectionString)) { var ludScript = _lastUpdatedDateColumnName != null?string.Format(", [{0}] = GETUTCDATE()", _lastUpdatedDateColumnName) : string.Empty; var cmdText = string.Format("UPDATE {0} SET [{1}] = @json{2} WHERE [{3}] = @eventId", FullTableName, _jsonColumnName, ludScript, _idColumnName); ctx.Database.ExecuteSqlCommand(cmdText, new SqlParameter("@json", json), new SqlParameter("@eventId", eventId)); } }
public override async Task ReplaceEventAsync(object docId, AuditEvent auditEvent) { var client = GetClient(auditEvent); var docUri = UriFactory.CreateDocumentUri(DatabaseBuilder?.Invoke(auditEvent), CollectionBuilder?.Invoke(auditEvent), docId.ToString()); Document doc; using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(auditEvent.ToJson()))) { doc = JsonSerializable.LoadFrom <Document>(ms); doc.Id = docId.ToString(); } await client.ReplaceDocumentAsync(docUri, doc); }
public override async Task ReplaceEventAsync(object eventId, AuditEvent auditEvent) { var json = auditEvent.ToJson(); using (var ctx = new AuditContext(ConnectionStringBuilder?.Invoke(auditEvent))) { var cmdText = GetReplaceCommandText(auditEvent); #if NETSTANDARD1_3 await ctx.Database.ExecuteSqlCommandAsync(cmdText, default(CancellationToken), new SqlParameter("@json", json), new SqlParameter("@eventId", eventId)); #else await ctx.Database.ExecuteSqlCommandAsync(cmdText, new SqlParameter("@json", json), new SqlParameter("@eventId", eventId)); #endif } }
private NpgsqlCommand GetInsertCommand(NpgsqlConnection cnn, AuditEvent auditEvent) { cnn.Open(); var cmd = cnn.CreateCommand(); var schema = string.IsNullOrWhiteSpace(_schema) ? "" : (_schema + "."); var data = string.IsNullOrWhiteSpace(_dataType) ? "@data" : $"CAST (@data AS {_dataType})"; cmd.CommandText = $@"insert into {schema}""{_tableName}"" (""{_dataColumnName}"") values ({data}) RETURNING (""{_idColumnName}"")"; var parameter = cmd.CreateParameter(); parameter.ParameterName = "data"; parameter.Value = auditEvent.ToJson(); cmd.Parameters.Add(parameter); return(cmd); }
public override object InsertEvent(AuditEvent auditEvent) { var jsonParam = new MySqlParameter("@value", auditEvent.ToJson()); using (var cnn = new MySqlConnection(_connectionString)) { var cmdText = string.Format("INSERT INTO `{0}` (`{1}`) VALUES(@value); SELECT LAST_INSERT_ID();", _tableName, _jsonColumnName); cnn.Open(); var cmd = cnn.CreateCommand(); cmd.CommandText = cmdText; cmd.Parameters.Add(jsonParam); object id = cmd.ExecuteScalar(); return(id); } }
public override object InsertEvent(AuditEvent auditEvent) { var json = new SqlParameter("json", auditEvent.ToJson()); using (var ctx = new AuditContext(_connectionString)) { var cmdText = string.Format("INSERT INTO {0} ([{1}]) OUTPUT CONVERT(NVARCHAR(MAX), INSERTED.[{2}]) AS [Id] VALUES (@json)", FullTableName, _jsonColumnName, _idColumnName); #if NET45 var result = ctx.Database.SqlQuery <string>(cmdText, json); return(result.FirstOrDefault()); #elif NETCOREAPP1_0 var result = ctx.FakeIdSet.FromSql(cmdText, json); return(result.FirstOrDefault().Id); #endif } }
public override async Task <object> InsertEventAsync(AuditEvent auditEvent) { var json = new SqlParameter("json", auditEvent.ToJson()); using (var ctx = new AuditContext(ConnectionStringBuilder?.Invoke(auditEvent))) { var cmdText = GetInsertCommandText(auditEvent); #if NET45 var result = ctx.Database.SqlQuery <string>(cmdText, json); return(await result.FirstOrDefaultAsync()); #elif NETSTANDARD1_3 || NETSTANDARD2_0 var result = ctx.FakeIdSet.FromSql(cmdText, json); return((await result.FirstOrDefaultAsync()).Id); #endif } }
public override object InsertEvent(AuditEvent auditEvent) { var source = _sourcePath; var logName = LogName; var json = auditEvent.ToJson(); if (!EventLog.SourceExists(source, _machineName)) { EventLog.CreateEventSource(source, logName); } using (var eventLog = new EventLog(logName, _machineName, source)) { eventLog.WriteEntry(json, auditEvent.Environment.Exception == null ? EventLogEntryType.Information : EventLogEntryType.Error); } return(null); }
public override async Task ReplaceEventAsync(object docId, AuditEvent auditEvent) { var client = GetClient(); var docUri = UriFactory.CreateDocumentUri(DatabaseBuilder?.Invoke(), ContainerBuilder?.Invoke(), docId.ToString()); Document doc; using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(auditEvent.ToJson()))) { doc = JsonSerializable.LoadFrom <Document>(ms); } doc.Id = docId.ToString(); await client.ReplaceDocumentAsync(docUri, doc, new RequestOptions() { JsonSerializerSettings = Core.Configuration.JsonSettings }); }
public override object InsertEvent(AuditEvent auditEvent) { var source = SourcePath; var logName = LogName; var message = MessageBuilder != null?MessageBuilder.Invoke(auditEvent) : auditEvent.ToJson(); if (!EventLog.SourceExists(source, MachineName)) { EventLog.CreateEventSource(source, logName); } using (var eventLog = new EventLog(logName, MachineName, source)) { eventLog.WriteEntry(message, auditEvent.Environment.Exception == null ? EventLogEntryType.Information : EventLogEntryType.Error); } return(null); }
public override void ReplaceEvent(object eventId, AuditEvent auditEvent) { var jsonParam = new MySqlParameter("@value", auditEvent.ToJson()); var idParam = new MySqlParameter("@id", eventId); using (var cnn = new MySqlConnection(_connectionString)) { var cmdText = string.Format("UPDATE `{0}` SET `{1}` = @value WHERE `{2}` = @id;", _tableName, _jsonColumnName, _idColumnName); cnn.Open(); var cmd = cnn.CreateCommand(); cmd.CommandText = cmdText; cmd.Parameters.Add(jsonParam); cmd.Parameters.Add(idParam); int rows = cmd.ExecuteNonQuery(); } }
public override object InsertEvent(AuditEvent auditEvent) { using (var cnn = new NpgsqlConnection(_connectionString)) { cnn.Open(); var cmd = cnn.CreateCommand(); var schema = string.IsNullOrWhiteSpace(_schema) ? "" : (_schema + "."); var data = string.IsNullOrWhiteSpace(_dataType) ? "@data" : $"CAST (@data AS {_dataType})"; cmd.CommandText = $@"insert into {schema}""{_tableName}"" (""{_dataColumnName}"") values ({data}) RETURNING id"; var parameter = cmd.CreateParameter(); parameter.ParameterName = "data"; parameter.Value = auditEvent.ToJson(); cmd.Parameters.Add(parameter); var id = cmd.ExecuteScalar(); return(id); } }
private SqlParameter[] GetParametersForInsert(AuditEvent auditEvent) { var parameters = new List <SqlParameter>(); if (JsonColumnNameBuilder != null) { parameters.Add(new SqlParameter("@json", auditEvent.ToJson())); } if (CustomColumns != null) { for (int i = 0; i < CustomColumns.Count; i++) { parameters.Add(new SqlParameter($"@c{i}", CustomColumns[i].Value.Invoke(auditEvent))); } } return(parameters.ToArray()); }
private List <MySqlParameter> GetParameterValues(AuditEvent auditEvent) { var parameters = new List <MySqlParameter>(); if (_jsonColumnName != null) { parameters.Add(new MySqlParameter("@value", auditEvent.ToJson())); } if (CustomColumns != null) { for (int i = 0; i < CustomColumns.Count; i++) { parameters.Add(new MySqlParameter($"@c{i}", CustomColumns[i].Value?.Invoke(auditEvent))); } } return(parameters); }
private SqlParameter[] GetParametersForReplace(object eventId, AuditEvent auditEvent) { var parameters = new List <SqlParameter>(); if (JsonColumnNameBuilder != null) { parameters.Add(new SqlParameter("@json", auditEvent.ToJson())); } parameters.Add(new SqlParameter("@eventId", eventId)); if (CustomColumns != null) { for (int i = 0; i < CustomColumns.Count; i++) { parameters.Add(new SqlParameter($"@c{i}", CustomColumns[i].Value.Invoke(auditEvent) ?? DBNull.Value)); } } return(parameters.ToArray()); }
private NpgsqlCommand GetReplaceCommand(NpgsqlConnection cnn, AuditEvent auditEvent, object eventId) { cnn.Open(); var cmd = cnn.CreateCommand(); var schema = string.IsNullOrWhiteSpace(_schema) ? "" : (_schema + "."); var data = string.IsNullOrWhiteSpace(_dataType) ? "@data" : $"CAST (@data AS {_dataType})"; var ludScript = string.IsNullOrWhiteSpace(_lastUpdatedDateColumnName) ? "" : $@", ""{_lastUpdatedDateColumnName}"" = CURRENT_TIMESTAMP"; cmd.CommandText = $@"update {schema}""{_tableName}"" SET ""{_dataColumnName}"" = {data}{ludScript} WHERE ""{_idColumnName}"" = @id"; var dataParameter = cmd.CreateParameter(); dataParameter.ParameterName = "data"; dataParameter.Value = auditEvent.ToJson(); cmd.Parameters.Add(dataParameter); var idParameter = cmd.CreateParameter(); idParameter.ParameterName = "id"; idParameter.Value = eventId; cmd.Parameters.Add(idParameter); return(cmd); }
public override void ReplaceEvent(object eventId, AuditEvent auditEvent) { using (var cnn = new NpgsqlConnection(_connectionString)) { cnn.Open(); var cmd = cnn.CreateCommand(); var schema = string.IsNullOrWhiteSpace(_schema) ? "" : (_schema + "."); var data = string.IsNullOrWhiteSpace(_dataType) ? "@data" : $"CAST (@data AS {_dataType})"; var ludScript = string.IsNullOrWhiteSpace(_lastUpdatedDateColumnName) ? "" : $@", ""{_lastUpdatedDateColumnName}"" = CURRENT_TIMESTAMP"; cmd.CommandText = $@"update {schema}""{_tableName}"" SET ""{_dataColumnName}"" = {data}{ludScript} WHERE ""{_idColumnName}"" = @id"; var dataParameter = cmd.CreateParameter(); dataParameter.ParameterName = "data"; dataParameter.Value = auditEvent.ToJson(); cmd.Parameters.Add(dataParameter); var idParameter = cmd.CreateParameter(); idParameter.ParameterName = "id"; idParameter.Value = eventId; cmd.Parameters.Add(idParameter); cmd.ExecuteNonQuery(); } }