public async Task QueryLogsAsTable() { #region Snippet:QueryLogsAsTable #if SNIPPET string workspaceId = "<workspace_id>"; #else string workspaceId = TestEnvironment.WorkspaceId; #endif #region Snippet:CreateLogsClient var client = new LogsQueryClient(new DefaultAzureCredential()); #endregion Response <LogsQueryResult> response = await client.QueryWorkspaceAsync( workspaceId, "AzureActivity | top 10 by TimeGenerated", new QueryTimeRange(TimeSpan.FromDays(1))); LogsTable table = response.Value.Table; foreach (var row in table.Rows) { Console.WriteLine(row["OperationName"] + " " + row["ResourceGroup"]); } #endregion }
private void ToggleLogView() { if (_adminInfo is not null) { ShowWarning = !ShowWarning; Logs = (ShowWarning ? _adminInfo.Logs : _adminInfo.Logs.Where(l => l.Level == "Error")).OrderByDescending(l => l.Timestamp).ToList(); LogsTable.SetItems(Logs); } }
private async Task ClearLogsAsync() { await AdminApi.ClearLogsAsync(); await OnInitializedAsync(); ToastService.DisplayToast("Logs vidés.", TimeSpan.FromSeconds(3), ToastType.Success, "clear-logs-admin", true); LogsTable.SetItems(Logs); ShowWarning = false; }
public async Task <bool> RunLAQuery(string tableName) { try { // Get credentials from config.txt Dictionary <string, string> credentials = new AppConfig().GetCredentials(); _workspaceId = credentials["workspaceId"]; _clientId = credentials["clientId"]; _clientSecret = credentials["clientSecret"]; _domain = credentials["domain"]; var credential = new ClientSecretCredential(_domain, _clientId, _clientSecret); var logsClient = new LogsQueryClient(credential); // Get a list of table names in your workspace var distinctTablesQuery = "search * | distinct $table"; Response <LogsQueryResult> response = await logsClient.QueryWorkspaceAsync(_workspaceId, distinctTablesQuery, QueryTimeRange.All); LogsTable table = response.Value.Table; IEnumerable <string> tableNames = from row in table.Rows let columnValue = row.GetString("$table") where columnValue.EndsWith("_CL") select columnValue; // Get custom table name tableName = tableName.Replace(".json", ""); // Check if the custom table name exists in the list if (!tableNames.Contains(tableName)) { return(false); } else { // Check if there's any data in the table for last 7 days var query = $"{tableName} | limit 10"; var timeRange = new QueryTimeRange(TimeSpan.FromDays(7)); Response <LogsQueryResult> results = await logsClient.QueryWorkspaceAsync(_workspaceId, query, timeRange); int tableCount = results.Value.AllTables.Count; return(tableCount > 0); } } catch (Exception ex) { throw new Exception("Calling Log Analytics error " + ex.Message); } }
private void SaveLog(LogEntry log) { Debug.WriteLine("Horizon Log : " + log.Message); if (LogsTable != null) { TableOperation insertOperation = TableOperation.Insert(log); LogsTable.Execute(insertOperation); } else { Debug.WriteLine("Horizon Log : Cannot save to server."); } }
public async Task QueryLogsAsTablePrintAll() { #region Snippet:QueryLogsPrintTable #if SNIPPET string workspaceId = "<workspace_id>"; #else string workspaceId = TestEnvironment.WorkspaceId; #endif var client = new LogsQueryClient(new DefaultAzureCredential()); Response <LogsQueryResult> response = await client.QueryWorkspaceAsync( workspaceId, "AzureActivity | top 10 by TimeGenerated", new QueryTimeRange(TimeSpan.FromDays(1))); LogsTable table = response.Value.Table; foreach (var column in table.Columns) { Console.Write(column.Name + ";"); } Console.WriteLine(); var columnCount = table.Columns.Count; foreach (var row in table.Rows) { for (int i = 0; i < columnCount; i++) { Console.Write(row[i] + ";"); } Console.WriteLine(); } #endregion }
public void ValidateMonitorModelFactoryTableCreation() { LogsTableColumn logsTableColumn0 = MonitorQueryModelFactory.LogsTableColumn("column0", LogsColumnType.Datetime); LogsTableColumn logsTableColumn1 = MonitorQueryModelFactory.LogsTableColumn("column1", LogsColumnType.Guid); LogsTableColumn logsTableColumn2 = MonitorQueryModelFactory.LogsTableColumn("column2", LogsColumnType.Int); LogsTableColumn logsTableColumn3 = MonitorQueryModelFactory.LogsTableColumn("column3", LogsColumnType.Long); LogsTableColumn logsTableColumn4 = MonitorQueryModelFactory.LogsTableColumn("column4", LogsColumnType.Real); LogsTableColumn logsTableColumn5 = MonitorQueryModelFactory.LogsTableColumn("column5", LogsColumnType.String); LogsTableColumn logsTableColumn6 = MonitorQueryModelFactory.LogsTableColumn("column6", LogsColumnType.Timespan); LogsTableColumn logsTableColumn7 = MonitorQueryModelFactory.LogsTableColumn("column7", LogsColumnType.Decimal); LogsTableColumn logsTableColumn8 = MonitorQueryModelFactory.LogsTableColumn("column8", LogsColumnType.Bool); LogsTableColumn logsTableColumn9 = MonitorQueryModelFactory.LogsTableColumn("column9", LogsColumnType.Dynamic); LogsTableColumn[] logsTableColumns = new LogsTableColumn[] { logsTableColumn0, logsTableColumn1, logsTableColumn2, logsTableColumn3, logsTableColumn4, logsTableColumn5, logsTableColumn6, logsTableColumn7, logsTableColumn8, logsTableColumn9 }; Object[] rowValues = new Object[] { "2015-12-31T23:59:59.9Z", "74be27de-1e4e-49d9-b579-fe0b331d3642", 12345, 1234567890123, 12345.6789, "string value", "00:00:10", "0.10101", false, "{\u0022a\u0022:123,\u0022b\u0022:\u0022hello\u0022,\u0022c\u0022:[1,2,3],\u0022d\u0022:{}}" }; LogsTableRow logsTableRow = MonitorQueryModelFactory.LogsTableRow(logsTableColumns, rowValues); LogsTableRow[] rowArray = new LogsTableRow[] { logsTableRow }; LogsTable logsTable = MonitorQueryModelFactory.LogsTable("tester", logsTableColumns.AsEnumerable(), rowArray.AsEnumerable()); Assert.AreEqual("tester", logsTable.Name); Assert.AreEqual(1, logsTable.Rows.Count); Assert.AreEqual(10, logsTable.Columns.Count); Assert.AreEqual("column0", logsTable.Columns[0].Name); Assert.AreEqual("datetime", logsTable.Columns[0].Type.ToString()); Assert.AreEqual("column1", logsTable.Columns[1].Name); Assert.AreEqual("guid", logsTable.Columns[1].Type.ToString()); Assert.AreEqual("column2", logsTable.Columns[2].Name); Assert.AreEqual("int", logsTable.Columns[2].Type.ToString()); Assert.AreEqual("column3", logsTable.Columns[3].Name); Assert.AreEqual("long", logsTable.Columns[3].Type.ToString()); Assert.AreEqual("column4", logsTable.Columns[4].Name); Assert.AreEqual("real", logsTable.Columns[4].Type.ToString()); Assert.AreEqual("column5", logsTable.Columns[5].Name); Assert.AreEqual("string", logsTable.Columns[5].Type.ToString()); Assert.AreEqual("column6", logsTable.Columns[6].Name); Assert.AreEqual("timespan", logsTable.Columns[6].Type.ToString()); Assert.AreEqual("column7", logsTable.Columns[7].Name); Assert.AreEqual("decimal", logsTable.Columns[7].Type.ToString()); Assert.AreEqual("column8", logsTable.Columns[8].Name); Assert.AreEqual("bool", logsTable.Columns[8].Type.ToString()); Assert.AreEqual("column9", logsTable.Columns[9].Name); Assert.AreEqual("dynamic", logsTable.Columns[9].Type.ToString()); var expectedDate = DateTimeOffset.Parse("2015-12-31 23:59:59.9+00:00"); Assert.AreEqual(expectedDate, logsTable.Rows[0].GetDateTimeOffset(0)); Assert.AreEqual(expectedDate, logsTable.Rows[0].GetObject("column0")); Assert.AreEqual(false, logsTable.Rows[0].GetBoolean("column8")); Assert.AreEqual(false, logsTable.Rows[0].GetBoolean(8)); Assert.AreEqual(false, logsTable.Rows[0].GetObject("column8")); Assert.AreEqual(Guid.Parse("74be27de-1e4e-49d9-b579-fe0b331d3642"), logsTable.Rows[0].GetGuid("column1")); Assert.AreEqual(Guid.Parse("74be27de-1e4e-49d9-b579-fe0b331d3642"), logsTable.Rows[0].GetGuid(1)); Assert.AreEqual(Guid.Parse("74be27de-1e4e-49d9-b579-fe0b331d3642"), logsTable.Rows[0].GetObject("column1")); Assert.AreEqual(12345, logsTable.Rows[0].GetInt32("column2")); Assert.AreEqual(12345, logsTable.Rows[0].GetInt32(2)); Assert.AreEqual(12345, logsTable.Rows[0].GetObject("column2")); Assert.AreEqual(1234567890123, logsTable.Rows[0].GetInt64("column3")); Assert.AreEqual(1234567890123, logsTable.Rows[0].GetInt64(3)); Assert.AreEqual(1234567890123, logsTable.Rows[0].GetObject("column3")); Assert.AreEqual(12345.6789d, logsTable.Rows[0].GetDouble("column4")); Assert.AreEqual(12345.6789d, logsTable.Rows[0].GetDouble(4)); Assert.AreEqual(12345.6789d, logsTable.Rows[0].GetObject("column4")); Assert.AreEqual("string value", logsTable.Rows[0].GetString("column5")); Assert.AreEqual("string value", logsTable.Rows[0].GetString(5)); Assert.AreEqual("string value", logsTable.Rows[0].GetObject("column5")); Assert.AreEqual(TimeSpan.FromSeconds(10), logsTable.Rows[0].GetTimeSpan("column6")); Assert.AreEqual(TimeSpan.FromSeconds(10), logsTable.Rows[0].GetTimeSpan(6)); Assert.AreEqual(TimeSpan.FromSeconds(10), logsTable.Rows[0].GetObject("column6")); Assert.AreEqual(0.10101m, logsTable.Rows[0].GetDecimal("column7")); Assert.AreEqual(0.10101m, logsTable.Rows[0].GetDecimal(7)); Assert.AreEqual(0.10101m, logsTable.Rows[0].GetObject("column7")); Assert.IsFalse(logsTable.Rows[0].GetBoolean("column8")); Assert.IsFalse(logsTable.Rows[0].GetBoolean(8)); Assert.AreEqual(false, logsTable.Rows[0].GetObject("column8")); Assert.AreEqual("{\"a\":123,\"b\":\"hello\",\"c\":[1,2,3],\"d\":{}}", logsTable.Rows[0].GetDynamic(9).ToString()); Assert.AreEqual("{\"a\":123,\"b\":\"hello\",\"c\":[1,2,3],\"d\":{}}", logsTable.Rows[0].GetDynamic("column9").ToString()); Assert.AreEqual("{\"a\":123,\"b\":\"hello\",\"c\":[1,2,3],\"d\":{}}", logsTable.Rows[0].GetObject("column9").ToString()); }