Send logs to Seq

This commit is contained in:
Kieran 2022-01-28 10:32:00 +00:00
parent be4bebc97f
commit 8e243e0d7f
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
5 changed files with 35 additions and 6 deletions

View File

@ -1,4 +1,6 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Newtonsoft.Json;
using VoidCat.Model;
using VoidCat.Services;
@ -17,6 +19,7 @@ namespace VoidCat.Controllers
[HttpPost]
[DisableRequestSizeLimit]
[DisableFormValueModelBinding]
public Task<InternalVoidFile> UploadFile()
{
return Request.HasFormContentType ?
@ -48,4 +51,20 @@ namespace VoidCat.Controllers
public record UpdateFileInfoRequest([JsonConverter(typeof(Base58GuidConverter))] Guid EditSecret, VoidFileMeta Metadata);
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class DisableFormValueModelBindingAttribute : Attribute, IResourceFilter
{
public void OnResourceExecuting(ResourceExecutingContext context)
{
var factories = context.ValueProviderFactories;
factories.RemoveType<FormValueProviderFactory>();
factories.RemoveType<FormFileValueProviderFactory>();
factories.RemoveType<JQueryFormValueProviderFactory>();
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
}
}
}

View File

@ -3,5 +3,7 @@
public class VoidSettings
{
public string DataDirectory { get; init; } = "./data";
public Uri? SeqHost { get; init; }
public string? SeqApiKey { get; init; }
}
}

View File

@ -2,8 +2,18 @@ using VoidCat.Model;
using VoidCat.Services;
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
var configuration = builder.Configuration;
var voidSettings = configuration.GetSection("Settings").Get<VoidSettings>();
services.AddSingleton(voidSettings);
// config logging
if (voidSettings?.SeqHost != default)
{
builder.Logging.AddSeq(voidSettings.SeqHost.ToString(), voidSettings.SeqApiKey);
}
services.AddRouting();
services.AddControllers().AddNewtonsoftJson();
@ -12,10 +22,6 @@ services.AddMemoryCache();
services.AddScoped<IFileStorage, LocalDiskFileIngressFactory>();
services.AddScoped<IStatsCollector, InMemoryStatsCollector>();
var configuration = builder.Configuration;
var voidSettings = configuration.GetSection("Settings").Get<VoidSettings>();
services.AddSingleton(voidSettings);
var app = builder.Build();
app.UseStaticFiles();

View File

@ -14,6 +14,7 @@
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.1" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.14.0" />
<PackageReference Include="NBitcoin" Version="6.0.19" />
<PackageReference Include="Seq.Extensions.Logging" Version="6.0.0" />
</ItemGroup>
<ItemGroup>
<!-- Don't publish the SPA source files, but do show them in the project files list -->

View File

@ -24,7 +24,8 @@ export function FilePreview(props) {
}
case "video/mp4":
case "video/matroksa":
case "video/x-matroska": {
case "video/x-matroska":
case "video/webm": {
return <video src={link} controls />;
}
}