Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ci.global.json
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "10.0.201"
"version": "10.0.203"
}
}
2 changes: 1 addition & 1 deletion src/Roastery/Roastery.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog" Version="4.3.1" />
<PackageReference Include="SerilogTracing" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/ApiConstants.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A number of added files copied headers with incorrect copyright years. I've ripped the bandaid off and updated all of them so we stop propagating this mistake.

// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/SeqConnectionFactory.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/AppLoader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppMetadataReader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingType.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingValue.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppActivator.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/EventFormat.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Command.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandAttribute.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandFeature.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandLineHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandMetadata.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/DefineCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/RunCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018-2021 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand DownExpand Up@@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime
foreach (var measurement in query.Measurements)
sql.Select(measurement.Value, measurement.Label);

sql.FromStream = true;
sql.From = query.DataSource.ToString().ToLowerInvariant();

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because DataSource is a value type (enum), this will fall back to Stream by default for older API versions that don't supply a data source explicitly (these only support stream anyway).


sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')");
sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')");
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2026 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
1 change: 0 additions & 1 deletion src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Threading.Tasks;
using SeqCli.Cli.Features;
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/HelpCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/IngestCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/LogCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/PrintCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/QueryCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
62 changes: 49 additions & 13 deletions src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@

using System;
using System.Threading.Tasks;
using Seq.Api.Model.Shared;
using Seq.Api.Model.Signals;
using SeqCli.Api;
using SeqCli.Cli.Features;
Expand All@@ -26,15 +27,16 @@
namespace SeqCli.Cli.Commands.RetentionPolicy;

[Command("retention", "create", "Create a retention policy",
Example = "seqcli retention create --after 30d --delete-all-events")]
Example = "seqcli retention create --after 30d --data-source stream --delete-all")]
class CreateCommand : Command
{
readonly ConnectionFeature _connection;
readonly OutputFormatFeature _output;
readonly StoragePathFeature _storagePath;

string? _afterDuration;
bool _deleteAllEvents;
bool _deleteAll;
string? _dataSource;
string? _deleteMatchingSignal;

public CreateCommand()
Expand All@@ -43,21 +45,36 @@ public CreateCommand()
"after=",
"A duration after which the policy will delete events, e.g. `7d`",
v => _afterDuration = ArgumentString.Normalize(v));

Options.Add(
"delete-all-events",
"The policy should delete all events (currently the only supported option)",
_ => _deleteAllEvents = true);
"data-source=",
"The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`",
v => _dataSource = ArgumentString.Normalize(v));

Options.Add(
"delete-all",
"The policy should delete all records in the target data source after the specified duration",
_ => _deleteAll = true);

Options.Add(
"delete=",
"Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed",
"A signal expression identifying events that should be deleted; not supported by the `series` data source",
s =>
{
_deleteMatchingSignal = s;
}
);


// Maintained for compatibility in Seq 2026.x; intended to be retired in 2027.
Options.Add(
"delete-all-events",
"The policy should delete all events from `stream`",
_ =>
{
_deleteAll = true;
_dataSource = null;
}, hidden: true);

_connection = Enable<ConnectionFeature>();
_output = Enable<OutputFormatFeature>();
_storagePath = Enable<StoragePathFeature>();
Expand All@@ -71,19 +88,19 @@ protected override async Task<int> Run()
SignalExpressionPart? removedSignalExpression;

// Exactly one of `delete-all-events` or `delete` must be specified
if (_deleteAllEvents)
if (_deleteAll)
{
if (!string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Only one of the `delete-all-events` or `delete` options may be specified");
Log.Error("Only one of the `--delete-all` or `--delete` options may be specified");
return 1;
}

removedSignalExpression = null;
}
else if (string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Either the `delete-all-events` or `delete` options must be specified");
Log.Error("One of either the `--delete-all` or `--delete` options must be specified");
return 1;
}
else
Expand All@@ -93,15 +110,34 @@ protected override async Task<int> Run()

if (_afterDuration == null)
{
Log.Error("A duration must be specified using `after`");
Log.Error("A duration must be specified using `--after`");
return 1;
}

var duration = DurationMoniker.ToTimeSpan(_afterDuration);


if (_dataSource == null)
{
Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target");
return 1;
}

if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource))
{
Log.Error("The `--data-source` option supports `stream` and `series`");
return 1;
}

if (removedSignalExpression != null && dataSource != DataSource.Stream)
{
Log.Error("The `--delete` option is only valid when `--data-source` is `stream`");
return 1;
}

var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = duration;
policy.RemovedSignalExpression = removedSignalExpression;
policy.DataSource = dataSource;

policy = await connection.RetentionPolicies.AddAsync(policy);

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ci.global.json
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "10.0.201"
"version": "10.0.203"
}
}
2 changes: 1 addition & 1 deletion src/Roastery/Roastery.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog" Version="4.3.1" />
<PackageReference Include="SerilogTracing" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/ApiConstants.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A number of added files copied headers with incorrect copyright years. I've ripped the bandaid off and updated all of them so we stop propagating this mistake.

// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/SeqConnectionFactory.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/AppLoader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppMetadataReader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingType.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingValue.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppActivator.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/EventFormat.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Command.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandAttribute.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandFeature.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandLineHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandMetadata.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/DefineCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/RunCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018-2021 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand DownExpand Up@@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime
foreach (var measurement in query.Measurements)
sql.Select(measurement.Value, measurement.Label);

sql.FromStream = true;
sql.From = query.DataSource.ToString().ToLowerInvariant();

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because DataSource is a value type (enum), this will fall back to Stream by default for older API versions that don't supply a data source explicitly (these only support stream anyway).


sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')");
sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')");
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2026 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
1 change: 0 additions & 1 deletion src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Threading.Tasks;
using SeqCli.Cli.Features;
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/HelpCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/IngestCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/LogCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/PrintCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/QueryCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
62 changes: 49 additions & 13 deletions src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@

using System;
using System.Threading.Tasks;
using Seq.Api.Model.Shared;
using Seq.Api.Model.Signals;
using SeqCli.Api;
using SeqCli.Cli.Features;
Expand All@@ -26,15 +27,16 @@
namespace SeqCli.Cli.Commands.RetentionPolicy;

[Command("retention", "create", "Create a retention policy",
Example = "seqcli retention create --after 30d --delete-all-events")]
Example = "seqcli retention create --after 30d --data-source stream --delete-all")]
class CreateCommand : Command
{
readonly ConnectionFeature _connection;
readonly OutputFormatFeature _output;
readonly StoragePathFeature _storagePath;

string? _afterDuration;
bool _deleteAllEvents;
bool _deleteAll;
string? _dataSource;
string? _deleteMatchingSignal;

public CreateCommand()
Expand All@@ -43,21 +45,36 @@ public CreateCommand()
"after=",
"A duration after which the policy will delete events, e.g. `7d`",
v => _afterDuration = ArgumentString.Normalize(v));

Options.Add(
"delete-all-events",
"The policy should delete all events (currently the only supported option)",
_ => _deleteAllEvents = true);
"data-source=",
"The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`",
v => _dataSource = ArgumentString.Normalize(v));

Options.Add(
"delete-all",
"The policy should delete all records in the target data source after the specified duration",
_ => _deleteAll = true);

Options.Add(
"delete=",
"Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed",
"A signal expression identifying events that should be deleted; not supported by the `series` data source",
s =>
{
_deleteMatchingSignal = s;
}
);


// Maintained for compatibility in Seq 2026.x; intended to be retired in 2027.
Options.Add(
"delete-all-events",
"The policy should delete all events from `stream`",
_ =>
{
_deleteAll = true;
_dataSource = null;
}, hidden: true);

_connection = Enable<ConnectionFeature>();
_output = Enable<OutputFormatFeature>();
_storagePath = Enable<StoragePathFeature>();
Expand All@@ -71,19 +88,19 @@ protected override async Task<int> Run()
SignalExpressionPart? removedSignalExpression;

// Exactly one of `delete-all-events` or `delete` must be specified
if (_deleteAllEvents)
if (_deleteAll)
{
if (!string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Only one of the `delete-all-events` or `delete` options may be specified");
Log.Error("Only one of the `--delete-all` or `--delete` options may be specified");
return 1;
}

removedSignalExpression = null;
}
else if (string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Either the `delete-all-events` or `delete` options must be specified");
Log.Error("One of either the `--delete-all` or `--delete` options must be specified");
return 1;
}
else
Expand All@@ -93,15 +110,34 @@ protected override async Task<int> Run()

if (_afterDuration == null)
{
Log.Error("A duration must be specified using `after`");
Log.Error("A duration must be specified using `--after`");
return 1;
}

var duration = DurationMoniker.ToTimeSpan(_afterDuration);


if (_dataSource == null)
{
Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target");
return 1;
}

if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource))
{
Log.Error("The `--data-source` option supports `stream` and `series`");
return 1;
}

if (removedSignalExpression != null && dataSource != DataSource.Stream)
{
Log.Error("The `--delete` option is only valid when `--data-source` is `stream`");
return 1;
}

var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = duration;
policy.RemovedSignalExpression = removedSignalExpression;
policy.DataSource = dataSource;

policy = await connection.RetentionPolicies.AddAsync(policy);

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ci.global.json
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "10.0.201"
"version": "10.0.203"
}
}
2 changes: 1 addition & 1 deletion src/Roastery/Roastery.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog" Version="4.3.1" />
<PackageReference Include="SerilogTracing" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/ApiConstants.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A number of added files copied headers with incorrect copyright years. I've ripped the bandaid off and updated all of them so we stop propagating this mistake.

// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/SeqConnectionFactory.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/AppLoader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppMetadataReader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingType.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingValue.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppActivator.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/EventFormat.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Command.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandAttribute.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandFeature.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandLineHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandMetadata.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/DefineCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/RunCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018-2021 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand DownExpand Up@@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime
foreach (var measurement in query.Measurements)
sql.Select(measurement.Value, measurement.Label);

sql.FromStream = true;
sql.From = query.DataSource.ToString().ToLowerInvariant();

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because DataSource is a value type (enum), this will fall back to Stream by default for older API versions that don't supply a data source explicitly (these only support stream anyway).


sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')");
sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')");
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2026 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
1 change: 0 additions & 1 deletion src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Threading.Tasks;
using SeqCli.Cli.Features;
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/HelpCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/IngestCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/LogCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/PrintCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/QueryCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
62 changes: 49 additions & 13 deletions src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@

using System;
using System.Threading.Tasks;
using Seq.Api.Model.Shared;
using Seq.Api.Model.Signals;
using SeqCli.Api;
using SeqCli.Cli.Features;
Expand All@@ -26,15 +27,16 @@
namespace SeqCli.Cli.Commands.RetentionPolicy;

[Command("retention", "create", "Create a retention policy",
Example = "seqcli retention create --after 30d --delete-all-events")]
Example = "seqcli retention create --after 30d --data-source stream --delete-all")]
class CreateCommand : Command
{
readonly ConnectionFeature _connection;
readonly OutputFormatFeature _output;
readonly StoragePathFeature _storagePath;

string? _afterDuration;
bool _deleteAllEvents;
bool _deleteAll;
string? _dataSource;
string? _deleteMatchingSignal;

public CreateCommand()
Expand All@@ -43,21 +45,36 @@ public CreateCommand()
"after=",
"A duration after which the policy will delete events, e.g. `7d`",
v => _afterDuration = ArgumentString.Normalize(v));

Options.Add(
"delete-all-events",
"The policy should delete all events (currently the only supported option)",
_ => _deleteAllEvents = true);
"data-source=",
"The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`",
v => _dataSource = ArgumentString.Normalize(v));

Options.Add(
"delete-all",
"The policy should delete all records in the target data source after the specified duration",
_ => _deleteAll = true);

Options.Add(
"delete=",
"Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed",
"A signal expression identifying events that should be deleted; not supported by the `series` data source",
s =>
{
_deleteMatchingSignal = s;
}
);


// Maintained for compatibility in Seq 2026.x; intended to be retired in 2027.
Options.Add(
"delete-all-events",
"The policy should delete all events from `stream`",
_ =>
{
_deleteAll = true;
_dataSource = null;
}, hidden: true);

_connection = Enable<ConnectionFeature>();
_output = Enable<OutputFormatFeature>();
_storagePath = Enable<StoragePathFeature>();
Expand All@@ -71,19 +88,19 @@ protected override async Task<int> Run()
SignalExpressionPart? removedSignalExpression;

// Exactly one of `delete-all-events` or `delete` must be specified
if (_deleteAllEvents)
if (_deleteAll)
{
if (!string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Only one of the `delete-all-events` or `delete` options may be specified");
Log.Error("Only one of the `--delete-all` or `--delete` options may be specified");
return 1;
}

removedSignalExpression = null;
}
else if (string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Either the `delete-all-events` or `delete` options must be specified");
Log.Error("One of either the `--delete-all` or `--delete` options must be specified");
return 1;
}
else
Expand All@@ -93,15 +110,34 @@ protected override async Task<int> Run()

if (_afterDuration == null)
{
Log.Error("A duration must be specified using `after`");
Log.Error("A duration must be specified using `--after`");
return 1;
}

var duration = DurationMoniker.ToTimeSpan(_afterDuration);


if (_dataSource == null)
{
Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target");
return 1;
}

if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource))
{
Log.Error("The `--data-source` option supports `stream` and `series`");
return 1;
}

if (removedSignalExpression != null && dataSource != DataSource.Stream)
{
Log.Error("The `--delete` option is only valid when `--data-source` is `stream`");
return 1;
}

var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = duration;
policy.RemovedSignalExpression = removedSignalExpression;
policy.DataSource = dataSource;

policy = await connection.RetentionPolicies.AddAsync(policy);

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ci.global.json
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "10.0.201"
"version": "10.0.203"
}
}
2 changes: 1 addition & 1 deletion src/Roastery/Roastery.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog" Version="4.3.1" />
<PackageReference Include="SerilogTracing" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/ApiConstants.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A number of added files copied headers with incorrect copyright years. I've ripped the bandaid off and updated all of them so we stop propagating this mistake.

// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/SeqConnectionFactory.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/AppLoader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppMetadataReader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingType.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingValue.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppActivator.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/EventFormat.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Command.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandAttribute.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandFeature.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandLineHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandMetadata.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/DefineCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/RunCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018-2021 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand DownExpand Up@@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime
foreach (var measurement in query.Measurements)
sql.Select(measurement.Value, measurement.Label);

sql.FromStream = true;
sql.From = query.DataSource.ToString().ToLowerInvariant();

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because DataSource is a value type (enum), this will fall back to Stream by default for older API versions that don't supply a data source explicitly (these only support stream anyway).


sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')");
sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')");
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2026 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
1 change: 0 additions & 1 deletion src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Threading.Tasks;
using SeqCli.Cli.Features;
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/HelpCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/IngestCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/LogCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/PrintCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/QueryCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
62 changes: 49 additions & 13 deletions src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@

using System;
using System.Threading.Tasks;
using Seq.Api.Model.Shared;
using Seq.Api.Model.Signals;
using SeqCli.Api;
using SeqCli.Cli.Features;
Expand All@@ -26,15 +27,16 @@
namespace SeqCli.Cli.Commands.RetentionPolicy;

[Command("retention", "create", "Create a retention policy",
Example = "seqcli retention create --after 30d --delete-all-events")]
Example = "seqcli retention create --after 30d --data-source stream --delete-all")]
class CreateCommand : Command
{
readonly ConnectionFeature _connection;
readonly OutputFormatFeature _output;
readonly StoragePathFeature _storagePath;

string? _afterDuration;
bool _deleteAllEvents;
bool _deleteAll;
string? _dataSource;
string? _deleteMatchingSignal;

public CreateCommand()
Expand All@@ -43,21 +45,36 @@ public CreateCommand()
"after=",
"A duration after which the policy will delete events, e.g. `7d`",
v => _afterDuration = ArgumentString.Normalize(v));

Options.Add(
"delete-all-events",
"The policy should delete all events (currently the only supported option)",
_ => _deleteAllEvents = true);
"data-source=",
"The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`",
v => _dataSource = ArgumentString.Normalize(v));

Options.Add(
"delete-all",
"The policy should delete all records in the target data source after the specified duration",
_ => _deleteAll = true);

Options.Add(
"delete=",
"Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed",
"A signal expression identifying events that should be deleted; not supported by the `series` data source",
s =>
{
_deleteMatchingSignal = s;
}
);


// Maintained for compatibility in Seq 2026.x; intended to be retired in 2027.
Options.Add(
"delete-all-events",
"The policy should delete all events from `stream`",
_ =>
{
_deleteAll = true;
_dataSource = null;
}, hidden: true);

_connection = Enable<ConnectionFeature>();
_output = Enable<OutputFormatFeature>();
_storagePath = Enable<StoragePathFeature>();
Expand All@@ -71,19 +88,19 @@ protected override async Task<int> Run()
SignalExpressionPart? removedSignalExpression;

// Exactly one of `delete-all-events` or `delete` must be specified
if (_deleteAllEvents)
if (_deleteAll)
{
if (!string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Only one of the `delete-all-events` or `delete` options may be specified");
Log.Error("Only one of the `--delete-all` or `--delete` options may be specified");
return 1;
}

removedSignalExpression = null;
}
else if (string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Either the `delete-all-events` or `delete` options must be specified");
Log.Error("One of either the `--delete-all` or `--delete` options must be specified");
return 1;
}
else
Expand All@@ -93,15 +110,34 @@ protected override async Task<int> Run()

if (_afterDuration == null)
{
Log.Error("A duration must be specified using `after`");
Log.Error("A duration must be specified using `--after`");
return 1;
}

var duration = DurationMoniker.ToTimeSpan(_afterDuration);


if (_dataSource == null)
{
Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target");
return 1;
}

if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource))
{
Log.Error("The `--data-source` option supports `stream` and `series`");
return 1;
}

if (removedSignalExpression != null && dataSource != DataSource.Stream)
{
Log.Error("The `--delete` option is only valid when `--data-source` is `stream`");
return 1;
}

var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = duration;
policy.RemovedSignalExpression = removedSignalExpression;
policy.DataSource = dataSource;

policy = await connection.RetentionPolicies.AddAsync(policy);

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ci.global.json
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "10.0.201"
"version": "10.0.203"
}
}
2 changes: 1 addition & 1 deletion src/Roastery/Roastery.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog" Version="4.3.1" />
<PackageReference Include="SerilogTracing" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/ApiConstants.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A number of added files copied headers with incorrect copyright years. I've ripped the bandaid off and updated all of them so we stop propagating this mistake.

// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/SeqConnectionFactory.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/AppLoader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppMetadataReader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingType.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingValue.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppActivator.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/EventFormat.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Command.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandAttribute.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandFeature.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandLineHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandMetadata.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/DefineCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/RunCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018-2021 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand DownExpand Up@@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime
foreach (var measurement in query.Measurements)
sql.Select(measurement.Value, measurement.Label);

sql.FromStream = true;
sql.From = query.DataSource.ToString().ToLowerInvariant();

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because DataSource is a value type (enum), this will fall back to Stream by default for older API versions that don't supply a data source explicitly (these only support stream anyway).


sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')");
sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')");
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2026 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
1 change: 0 additions & 1 deletion src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Threading.Tasks;
using SeqCli.Cli.Features;
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/HelpCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/IngestCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/LogCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/PrintCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/QueryCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
62 changes: 49 additions & 13 deletions src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@

using System;
using System.Threading.Tasks;
using Seq.Api.Model.Shared;
using Seq.Api.Model.Signals;
using SeqCli.Api;
using SeqCli.Cli.Features;
Expand All@@ -26,15 +27,16 @@
namespace SeqCli.Cli.Commands.RetentionPolicy;

[Command("retention", "create", "Create a retention policy",
Example = "seqcli retention create --after 30d --delete-all-events")]
Example = "seqcli retention create --after 30d --data-source stream --delete-all")]
class CreateCommand : Command
{
readonly ConnectionFeature _connection;
readonly OutputFormatFeature _output;
readonly StoragePathFeature _storagePath;

string? _afterDuration;
bool _deleteAllEvents;
bool _deleteAll;
string? _dataSource;
string? _deleteMatchingSignal;

public CreateCommand()
Expand All@@ -43,21 +45,36 @@ public CreateCommand()
"after=",
"A duration after which the policy will delete events, e.g. `7d`",
v => _afterDuration = ArgumentString.Normalize(v));

Options.Add(
"delete-all-events",
"The policy should delete all events (currently the only supported option)",
_ => _deleteAllEvents = true);
"data-source=",
"The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`",
v => _dataSource = ArgumentString.Normalize(v));

Options.Add(
"delete-all",
"The policy should delete all records in the target data source after the specified duration",
_ => _deleteAll = true);

Options.Add(
"delete=",
"Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed",
"A signal expression identifying events that should be deleted; not supported by the `series` data source",
s =>
{
_deleteMatchingSignal = s;
}
);


// Maintained for compatibility in Seq 2026.x; intended to be retired in 2027.
Options.Add(
"delete-all-events",
"The policy should delete all events from `stream`",
_ =>
{
_deleteAll = true;
_dataSource = null;
}, hidden: true);

_connection = Enable<ConnectionFeature>();
_output = Enable<OutputFormatFeature>();
_storagePath = Enable<StoragePathFeature>();
Expand All@@ -71,19 +88,19 @@ protected override async Task<int> Run()
SignalExpressionPart? removedSignalExpression;

// Exactly one of `delete-all-events` or `delete` must be specified
if (_deleteAllEvents)
if (_deleteAll)
{
if (!string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Only one of the `delete-all-events` or `delete` options may be specified");
Log.Error("Only one of the `--delete-all` or `--delete` options may be specified");
return 1;
}

removedSignalExpression = null;
}
else if (string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Either the `delete-all-events` or `delete` options must be specified");
Log.Error("One of either the `--delete-all` or `--delete` options must be specified");
return 1;
}
else
Expand All@@ -93,15 +110,34 @@ protected override async Task<int> Run()

if (_afterDuration == null)
{
Log.Error("A duration must be specified using `after`");
Log.Error("A duration must be specified using `--after`");
return 1;
}

var duration = DurationMoniker.ToTimeSpan(_afterDuration);


if (_dataSource == null)
{
Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target");
return 1;
}

if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource))
{
Log.Error("The `--data-source` option supports `stream` and `series`");
return 1;
}

if (removedSignalExpression != null && dataSource != DataSource.Stream)
{
Log.Error("The `--delete` option is only valid when `--data-source` is `stream`");
return 1;
}

var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = duration;
policy.RemovedSignalExpression = removedSignalExpression;
policy.DataSource = dataSource;

policy = await connection.RetentionPolicies.AddAsync(policy);

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ci.global.json
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "10.0.201"
"version": "10.0.203"
}
}
2 changes: 1 addition & 1 deletion src/Roastery/Roastery.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog" Version="4.3.1" />
<PackageReference Include="SerilogTracing" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/ApiConstants.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A number of added files copied headers with incorrect copyright years. I've ripped the bandaid off and updated all of them so we stop propagating this mistake.

// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/SeqConnectionFactory.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/AppLoader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppMetadataReader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingType.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingValue.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppActivator.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/EventFormat.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Command.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandAttribute.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandFeature.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandLineHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandMetadata.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/DefineCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/RunCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018-2021 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand DownExpand Up@@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime
foreach (var measurement in query.Measurements)
sql.Select(measurement.Value, measurement.Label);

sql.FromStream = true;
sql.From = query.DataSource.ToString().ToLowerInvariant();

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because DataSource is a value type (enum), this will fall back to Stream by default for older API versions that don't supply a data source explicitly (these only support stream anyway).


sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')");
sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')");
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2026 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
1 change: 0 additions & 1 deletion src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Threading.Tasks;
using SeqCli.Cli.Features;
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/HelpCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/IngestCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/LogCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/PrintCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/QueryCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
62 changes: 49 additions & 13 deletions src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@

using System;
using System.Threading.Tasks;
using Seq.Api.Model.Shared;
using Seq.Api.Model.Signals;
using SeqCli.Api;
using SeqCli.Cli.Features;
Expand All@@ -26,15 +27,16 @@
namespace SeqCli.Cli.Commands.RetentionPolicy;

[Command("retention", "create", "Create a retention policy",
Example = "seqcli retention create --after 30d --delete-all-events")]
Example = "seqcli retention create --after 30d --data-source stream --delete-all")]
class CreateCommand : Command
{
readonly ConnectionFeature _connection;
readonly OutputFormatFeature _output;
readonly StoragePathFeature _storagePath;

string? _afterDuration;
bool _deleteAllEvents;
bool _deleteAll;
string? _dataSource;
string? _deleteMatchingSignal;

public CreateCommand()
Expand All@@ -43,21 +45,36 @@ public CreateCommand()
"after=",
"A duration after which the policy will delete events, e.g. `7d`",
v => _afterDuration = ArgumentString.Normalize(v));

Options.Add(
"delete-all-events",
"The policy should delete all events (currently the only supported option)",
_ => _deleteAllEvents = true);
"data-source=",
"The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`",
v => _dataSource = ArgumentString.Normalize(v));

Options.Add(
"delete-all",
"The policy should delete all records in the target data source after the specified duration",
_ => _deleteAll = true);

Options.Add(
"delete=",
"Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed",
"A signal expression identifying events that should be deleted; not supported by the `series` data source",
s =>
{
_deleteMatchingSignal = s;
}
);


// Maintained for compatibility in Seq 2026.x; intended to be retired in 2027.
Options.Add(
"delete-all-events",
"The policy should delete all events from `stream`",
_ =>
{
_deleteAll = true;
_dataSource = null;
}, hidden: true);

_connection = Enable<ConnectionFeature>();
_output = Enable<OutputFormatFeature>();
_storagePath = Enable<StoragePathFeature>();
Expand All@@ -71,19 +88,19 @@ protected override async Task<int> Run()
SignalExpressionPart? removedSignalExpression;

// Exactly one of `delete-all-events` or `delete` must be specified
if (_deleteAllEvents)
if (_deleteAll)
{
if (!string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Only one of the `delete-all-events` or `delete` options may be specified");
Log.Error("Only one of the `--delete-all` or `--delete` options may be specified");
return 1;
}

removedSignalExpression = null;
}
else if (string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Either the `delete-all-events` or `delete` options must be specified");
Log.Error("One of either the `--delete-all` or `--delete` options must be specified");
return 1;
}
else
Expand All@@ -93,15 +110,34 @@ protected override async Task<int> Run()

if (_afterDuration == null)
{
Log.Error("A duration must be specified using `after`");
Log.Error("A duration must be specified using `--after`");
return 1;
}

var duration = DurationMoniker.ToTimeSpan(_afterDuration);


if (_dataSource == null)
{
Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target");
return 1;
}

if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource))
{
Log.Error("The `--data-source` option supports `stream` and `series`");
return 1;
}

if (removedSignalExpression != null && dataSource != DataSource.Stream)
{
Log.Error("The `--delete` option is only valid when `--data-source` is `stream`");
return 1;
}

var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = duration;
policy.RemovedSignalExpression = removedSignalExpression;
policy.DataSource = dataSource;

policy = await connection.RetentionPolicies.AddAsync(policy);

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ci.global.json
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "10.0.201"
"version": "10.0.203"
}
}
2 changes: 1 addition & 1 deletion src/Roastery/Roastery.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog" Version="4.3.1" />
<PackageReference Include="SerilogTracing" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/ApiConstants.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A number of added files copied headers with incorrect copyright years. I've ripped the bandaid off and updated all of them so we stop propagating this mistake.

// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/SeqConnectionFactory.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/AppLoader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppMetadataReader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingType.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingValue.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppActivator.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/EventFormat.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Command.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandAttribute.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandFeature.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandLineHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandMetadata.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/DefineCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/RunCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018-2021 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand DownExpand Up@@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime
foreach (var measurement in query.Measurements)
sql.Select(measurement.Value, measurement.Label);

sql.FromStream = true;
sql.From = query.DataSource.ToString().ToLowerInvariant();

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because DataSource is a value type (enum), this will fall back to Stream by default for older API versions that don't supply a data source explicitly (these only support stream anyway).


sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')");
sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')");
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2026 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
1 change: 0 additions & 1 deletion src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Threading.Tasks;
using SeqCli.Cli.Features;
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/HelpCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/IngestCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/LogCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/PrintCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/QueryCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
62 changes: 49 additions & 13 deletions src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@

using System;
using System.Threading.Tasks;
using Seq.Api.Model.Shared;
using Seq.Api.Model.Signals;
using SeqCli.Api;
using SeqCli.Cli.Features;
Expand All@@ -26,15 +27,16 @@
namespace SeqCli.Cli.Commands.RetentionPolicy;

[Command("retention", "create", "Create a retention policy",
Example = "seqcli retention create --after 30d --delete-all-events")]
Example = "seqcli retention create --after 30d --data-source stream --delete-all")]
class CreateCommand : Command
{
readonly ConnectionFeature _connection;
readonly OutputFormatFeature _output;
readonly StoragePathFeature _storagePath;

string? _afterDuration;
bool _deleteAllEvents;
bool _deleteAll;
string? _dataSource;
string? _deleteMatchingSignal;

public CreateCommand()
Expand All@@ -43,21 +45,36 @@ public CreateCommand()
"after=",
"A duration after which the policy will delete events, e.g. `7d`",
v => _afterDuration = ArgumentString.Normalize(v));

Options.Add(
"delete-all-events",
"The policy should delete all events (currently the only supported option)",
_ => _deleteAllEvents = true);
"data-source=",
"The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`",
v => _dataSource = ArgumentString.Normalize(v));

Options.Add(
"delete-all",
"The policy should delete all records in the target data source after the specified duration",
_ => _deleteAll = true);

Options.Add(
"delete=",
"Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed",
"A signal expression identifying events that should be deleted; not supported by the `series` data source",
s =>
{
_deleteMatchingSignal = s;
}
);


// Maintained for compatibility in Seq 2026.x; intended to be retired in 2027.
Options.Add(
"delete-all-events",
"The policy should delete all events from `stream`",
_ =>
{
_deleteAll = true;
_dataSource = null;
}, hidden: true);

_connection = Enable<ConnectionFeature>();
_output = Enable<OutputFormatFeature>();
_storagePath = Enable<StoragePathFeature>();
Expand All@@ -71,19 +88,19 @@ protected override async Task<int> Run()
SignalExpressionPart? removedSignalExpression;

// Exactly one of `delete-all-events` or `delete` must be specified
if (_deleteAllEvents)
if (_deleteAll)
{
if (!string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Only one of the `delete-all-events` or `delete` options may be specified");
Log.Error("Only one of the `--delete-all` or `--delete` options may be specified");
return 1;
}

removedSignalExpression = null;
}
else if (string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Either the `delete-all-events` or `delete` options must be specified");
Log.Error("One of either the `--delete-all` or `--delete` options must be specified");
return 1;
}
else
Expand All@@ -93,15 +110,34 @@ protected override async Task<int> Run()

if (_afterDuration == null)
{
Log.Error("A duration must be specified using `after`");
Log.Error("A duration must be specified using `--after`");
return 1;
}

var duration = DurationMoniker.ToTimeSpan(_afterDuration);


if (_dataSource == null)
{
Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target");
return 1;
}

if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource))
{
Log.Error("The `--data-source` option supports `stream` and `series`");
return 1;
}

if (removedSignalExpression != null && dataSource != DataSource.Stream)
{
Log.Error("The `--delete` option is only valid when `--data-source` is `stream`");
return 1;
}

var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = duration;
policy.RemovedSignalExpression = removedSignalExpression;
policy.DataSource = dataSource;

policy = await connection.RetentionPolicies.AddAsync(policy);

Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ci.global.json
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "10.0.201"
"version": "10.0.203"
}
}
2 changes: 1 addition & 1 deletion src/Roastery/Roastery.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog" Version="4.3.1" />
<PackageReference Include="SerilogTracing" Version="2.3.1" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/ApiConstants.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A number of added files copied headers with incorrect copyright years. I've ripped the bandaid off and updated all of them so we stop propagating this mistake.

// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Api/SeqConnectionFactory.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/AppLoader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppMetadataReader.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingType.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Definitions/AppSettingValue.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppActivator.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/AppHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Apps/Hosting/EventFormat.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Command.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandAttribute.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandFeature.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandLineHost.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/CommandMetadata.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/DefineCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2020 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/App/RunCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018-2021 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand DownExpand Up@@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime
foreach (var measurement in query.Measurements)
sql.Select(measurement.Value, measurement.Label);

sql.FromStream = true;
sql.From = query.DataSource.ToString().ToLowerInvariant();

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because DataSource is a value type (enum), this will fall back to Stream by default for older API versions that don't supply a data source explicitly (these only support stream anyway).


sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')");
sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')");
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2026 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
1 change: 0 additions & 1 deletion src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Threading.Tasks;
using SeqCli.Cli.Features;
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/HelpCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/ListCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/IngestCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/LogCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/PrintCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2019 Datalust Pty Ltd and Contributors
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion src/SeqCli/Cli/Commands/QueryCommand.cs
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
// Copyright 2018 Datalust Pty Ltd
// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
62 changes: 49 additions & 13 deletions src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@

using System;
using System.Threading.Tasks;
using Seq.Api.Model.Shared;
using Seq.Api.Model.Signals;
using SeqCli.Api;
using SeqCli.Cli.Features;
Expand All@@ -26,15 +27,16 @@
namespace SeqCli.Cli.Commands.RetentionPolicy;

[Command("retention", "create", "Create a retention policy",
Example = "seqcli retention create --after 30d --delete-all-events")]
Example = "seqcli retention create --after 30d --data-source stream --delete-all")]
class CreateCommand : Command
{
readonly ConnectionFeature _connection;
readonly OutputFormatFeature _output;
readonly StoragePathFeature _storagePath;

string? _afterDuration;
bool _deleteAllEvents;
bool _deleteAll;
string? _dataSource;
string? _deleteMatchingSignal;

public CreateCommand()
Expand All@@ -43,21 +45,36 @@ public CreateCommand()
"after=",
"A duration after which the policy will delete events, e.g. `7d`",
v => _afterDuration = ArgumentString.Normalize(v));

Options.Add(
"delete-all-events",
"The policy should delete all events (currently the only supported option)",
_ => _deleteAllEvents = true);
"data-source=",
"The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`",
v => _dataSource = ArgumentString.Normalize(v));

Options.Add(
"delete-all",
"The policy should delete all records in the target data source after the specified duration",
_ => _deleteAll = true);

Options.Add(
"delete=",
"Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed",
"A signal expression identifying events that should be deleted; not supported by the `series` data source",
s =>
{
_deleteMatchingSignal = s;
}
);


// Maintained for compatibility in Seq 2026.x; intended to be retired in 2027.
Options.Add(
"delete-all-events",
"The policy should delete all events from `stream`",
_ =>
{
_deleteAll = true;
_dataSource = null;
}, hidden: true);

_connection = Enable<ConnectionFeature>();
_output = Enable<OutputFormatFeature>();
_storagePath = Enable<StoragePathFeature>();
Expand All@@ -71,19 +88,19 @@ protected override async Task<int> Run()
SignalExpressionPart? removedSignalExpression;

// Exactly one of `delete-all-events` or `delete` must be specified
if (_deleteAllEvents)
if (_deleteAll)
{
if (!string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Only one of the `delete-all-events` or `delete` options may be specified");
Log.Error("Only one of the `--delete-all` or `--delete` options may be specified");
return 1;
}

removedSignalExpression = null;
}
else if (string.IsNullOrEmpty(_deleteMatchingSignal))
{
Log.Error("Either the `delete-all-events` or `delete` options must be specified");
Log.Error("One of either the `--delete-all` or `--delete` options must be specified");
return 1;
}
else
Expand All@@ -93,15 +110,34 @@ protected override async Task<int> Run()

if (_afterDuration == null)
{
Log.Error("A duration must be specified using `after`");
Log.Error("A duration must be specified using `--after`");
return 1;
}

var duration = DurationMoniker.ToTimeSpan(_afterDuration);


if (_dataSource == null)
{
Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target");
return 1;
}

if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource))
{
Log.Error("The `--data-source` option supports `stream` and `series`");
return 1;
}

if (removedSignalExpression != null && dataSource != DataSource.Stream)
{
Log.Error("The `--delete` option is only valid when `--data-source` is `stream`");
return 1;
}

var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = duration;
policy.RemovedSignalExpression = removedSignalExpression;
policy.DataSource = dataSource;

policy = await connection.RetentionPolicies.AddAsync(policy);

Expand Down
Loading
Loading