public void Log(IAuditEntry entry, string content = "", bool newRecord = true) { Document doc = new Document(); AddField(doc, "user", entry.User.ToLower(), Field.Index.NOT_ANALYZED); if (!_users.Contains(entry.User.ToLower())) { _users.Add(entry.User.ToLower()); } AddField(doc, "path", entry.Path, Field.Index.ANALYZED); AddField(doc, "id", entry.Id.ToLower(), Field.Index.ANALYZED); AddField(doc, "date", entry.TimeStamp.ToString("yyyyMMdd"), Field.Index.ANALYZED); AddField(doc, "timestamp", entry.TimeStamp.ToString("yyyy-MM-ddTHH:mm:ss.fff"), Field.Index.ANALYZED); AddField(doc, "note", entry.Note, Field.Index.ANALYZED); AddField(doc, "database", entry.Database, Field.Index.ANALYZED); AddField(doc, "icon", entry.Icon, Field.Index.NOT_ANALYZED); foreach (var role in entry.Role) { AddField(doc, "role", role.ToLower(), Field.Index.NOT_ANALYZED); } AddField(doc, "event", entry.EventId, Field.Index.ANALYZED); if (!string.IsNullOrWhiteSpace(content)) { AddField(doc, "content", content, Field.Index.ANALYZED); } _writeQueue.Enqueue(newRecord ? new Tuple <AuditSourceRecord, Document>(new AuditSourceRecord(entry as ItemAuditEntry, content), doc) : new Tuple <AuditSourceRecord, Document>(null, doc)); KickOptimizeTimer(); }
public void Write_and_GetAll() { var sut = (AuditService)Services.GetRequiredService <IAuditService>(); IAuditEntry expected = new AuditEntryBuilder().Build(); IAuditEntry actual = sut.Write( expected.PerformingUserId, expected.PerformingDetails, expected.PerformingIp, expected.EventDateUtc, expected.AffectedUserId, expected.AffectedDetails, expected.EventType, expected.EventDetails); IAuditEntry[] entries = sut.GetAll().ToArray(); Assert.Multiple(() => { Assert.AreEqual(expected.PerformingUserId, actual.PerformingUserId); Assert.AreEqual(expected.PerformingDetails, actual.PerformingDetails); Assert.AreEqual(expected.EventDateUtc, actual.EventDateUtc); Assert.AreEqual(expected.AffectedUserId, actual.AffectedUserId); Assert.AreEqual(expected.AffectedDetails, actual.AffectedDetails); Assert.AreEqual(expected.EventType, actual.EventType); Assert.AreEqual(expected.EventDetails, actual.EventDetails); Assert.IsNotNull(entries); Assert.AreEqual(1, entries.Length); Assert.AreEqual(expected.PerformingUserId, entries[0].PerformingUserId); }); }
public void Log(IAuditEntry entry, string content = "") { Document doc = new Document(); AddField(doc, "user", entry.User.ToLower(), Field.Index.NOT_ANALYZED); if (!users.Contains(entry.User.ToLower())) { users.Add(entry.User.ToLower()); } AddField(doc, "path", entry.Path, Field.Index.ANALYZED); AddField(doc, "id", entry.Id.ToShortID().ToString().ToLower(), Field.Index.ANALYZED); AddField(doc, "date", entry.TimeStamp.ToString("yyyyMMdd"), Field.Index.ANALYZED); AddField(doc, "timestamp", entry.TimeStamp.ToString("yyyy-MM-ddTHH:mm:ss.fff"), Field.Index.ANALYZED); AddField(doc, "note", entry.Note, Field.Index.ANALYZED); AddField(doc, "database", entry.Database, Field.Index.ANALYZED); foreach (var role in entry.Role) { AddField(doc, "role", role.ToLower(), Field.Index.NOT_ANALYZED); } AddField(doc, "event", entry.EventId, Field.Index.ANALYZED); if (!string.IsNullOrWhiteSpace(content)) { AddField(doc, "content", content, Field.Index.ANALYZED); } writeQueue.Enqueue(doc); KickOptimizeTimer(); }
public static AuditEntryDto BuildDto(IAuditEntry entity) => new AuditEntryDto { Id = entity.Id, PerformingUserId = entity.PerformingUserId, PerformingDetails = entity.PerformingDetails, PerformingIp = entity.PerformingIp, EventDateUtc = entity.EventDateUtc, AffectedUserId = entity.AffectedUserId, AffectedDetails = entity.AffectedDetails, EventType = entity.EventType, EventDetails = entity.EventDetails, };
public async Task LogAuditAsync(string message, IAuditEntry auditEntry) { try { AuditLogEntry entry = new AuditLogEntry { Message = message, AuditEntry = auditEntry }; SetLogEntryCommonProperties(entry); var document = _bsonDocumentBuilderService.BuildAuditLogEntry(entry); await _dataAccessService.SaveAsync(document, _databaseName, _loggerName); } catch (Exception e) { throw new FailedToLogException("Failed to log : " + e.Message, e); } }
public void Log(IAuditEntry entry, string content = "", bool newRecord = true) { Guid userId; using (var db = new SqlAuditLogDataContext()) { var username = entry.User.ToLower(); var sqlAuditLogUser = db.ExecuteQuery <SqlAuditLogUser>("SELECT * FROM dbo.Users WHERE Username = {0}", username).ToList(); if (!sqlAuditLogUser.Any()) { userId = Guid.NewGuid(); db.ExecuteCommand("INSERT INTO dbo.Users (Id, Username) VALUES ({0}, {1})", userId, username); } else { userId = sqlAuditLogUser.First().Id; } } var role = _jsonSerializationService.SerializeObject(entry.Role); using (var db = new SqlAuditLogDataContext()) { db.ExecuteCommand( "INSERT INTO [dbo].[AuditEntry] " + "([Id], [UserId], [Role], [ItemId], [Database], [Path], [TimeStamp], [EventId], [Note], [Label], [Color], [Icon], [Content]) " + "VALUES ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12})", Guid.NewGuid(), userId, role, entry.Id?.ToLower() ?? "", entry.Database ?? "", entry.Path ?? "", DateTime.Now, entry.EventId ?? "", entry.Note ?? "", entry.Label ?? "", entry.Color ?? "", entry.Icon ?? "", content ?? "" ); } }
public void Log(IAuditEntry entry, string content = "") { Document doc = new Document(); AddField(doc, "user", entry.User.ToLower(), Field.Index.NOT_ANALYZED); if (!users.Contains(entry.User.ToLower())) users.Add(entry.User.ToLower()); AddField(doc, "path", entry.Path, Field.Index.ANALYZED); AddField(doc, "id", entry.Id.ToShortID().ToString().ToLower(), Field.Index.ANALYZED); AddField(doc, "date", entry.TimeStamp.ToString("yyyyMMdd"), Field.Index.ANALYZED); AddField(doc, "timestamp", entry.TimeStamp.ToString("yyyy-MM-ddTHH:mm:ss.fff"), Field.Index.ANALYZED); AddField(doc, "note", entry.Note, Field.Index.ANALYZED); AddField(doc, "database", entry.Database, Field.Index.ANALYZED); foreach (var role in entry.Role) AddField(doc, "role", role.ToLower(), Field.Index.NOT_ANALYZED); AddField(doc, "event", entry.EventId, Field.Index.ANALYZED); if (!string.IsNullOrWhiteSpace(content)) AddField(doc, "content", content, Field.Index.ANALYZED); writeQueue.Enqueue(doc); KickOptimizeTimer(); }
public async Task Create(IAuditEntry auditEntry) { await Task.Delay(300); Debug.WriteLine($"Audit created, {auditEntry.Operation}: {auditEntry.Data}."); }