Browse Source

Hopefully improved the logging.

pull/357/head
Sebastian Stehle 8 years ago
parent
commit
530e66850e
  1. 86
      src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs
  2. 2
      src/Squidex/Config/Logging.cs
  3. 5
      src/Squidex/Config/Orleans/OrleansServices.cs
  4. 2
      src/Squidex/Program.cs

86
src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs

@ -5,9 +5,7 @@
// All rights reserved. Licensed under the MIT license. // All rights reserved. Licensed under the MIT license.
// ========================================================================== // ==========================================================================
using System; using System.Net.Http;
using System.IO;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
@ -15,10 +13,7 @@ namespace Squidex.Areas.Frontend.Middlewares
{ {
public sealed class WebpackMiddleware public sealed class WebpackMiddleware
{ {
private const string Host = "localhost"; private const string WebpackUrl = "http://localhost:3000/index.html";
private const string Port = "3000";
private static readonly string[] Scripts = { "shims", "app" };
private static readonly string[] Styles = Array.Empty<string>();
private readonly RequestDelegate next; private readonly RequestDelegate next;
public WebpackMiddleware(RequestDelegate next) public WebpackMiddleware(RequestDelegate next)
@ -30,34 +25,29 @@ namespace Squidex.Areas.Frontend.Middlewares
{ {
if (context.IsHtmlPath()) if (context.IsHtmlPath())
{ {
var responseBuffer = new MemoryStream(); if (context.Response.StatusCode != 304)
var responseBody = context.Response.Body; {
using (var client = new HttpClient())
context.Response.Body = responseBuffer; {
var result = await client.GetAsync(WebpackUrl);
await next(context);
context.Response.Body = responseBody; context.Response.StatusCode = (int)result.StatusCode;
var response = Encoding.UTF8.GetString(responseBuffer.ToArray()); if (result.IsSuccessStatusCode)
{
var html = await result.Content.ReadAsStringAsync();
if (context.IsIndex()) var basePath = context.Request.PathBase;
{
response = InjectStyles(response);
response = InjectScripts(response);
}
var basePath = context.Request.PathBase; if (basePath.HasValue)
{
html = AdjustBase(html, basePath.Value);
}
if (basePath.HasValue) await context.Response.WriteHtmlAsync(html);
{ }
response = AdjustBase(response, basePath.Value); }
} }
context.Response.ContentLength = Encoding.UTF8.GetByteCount(response);
context.Response.Body = responseBody;
await context.Response.WriteAsync(response);
} }
else else
{ {
@ -65,44 +55,6 @@ namespace Squidex.Areas.Frontend.Middlewares
} }
} }
private static string InjectStyles(string response)
{
if (!response.Contains("</head>"))
{
return response;
}
var sb = new StringBuilder();
foreach (var file in Styles)
{
sb.AppendLine($"<link href=\"http://{Host}:{Port}/{file}.css\" rel=\"stylesheet\">");
}
response = response.Replace("</head>", $"{sb}</head>");
return response;
}
private static string InjectScripts(string response)
{
if (!response.Contains("</body>"))
{
return response;
}
var sb = new StringBuilder();
foreach (var file in Scripts)
{
sb.AppendLine($"<script type=\"text/javascript\" src=\"http://{Host}:{Port}/{file}.js\"></script>");
}
response = response.Replace("</body>", $"{sb}</body>");
return response;
}
private static string AdjustBase(string response, string baseUrl) private static string AdjustBase(string response, string baseUrl)
{ {
return response.Replace("<base href=\"/\">", $"<base href=\"{baseUrl}/\">"); return response.Replace("<base href=\"/\">", $"<base href=\"{baseUrl}/\">");

2
src/Squidex/Config/Logging.cs

@ -14,7 +14,7 @@ namespace Squidex.Config
{ {
public static class Logging public static class Logging
{ {
public static void AddFilter(this ILoggingBuilder builder) public static void AddFilters(this ILoggingBuilder builder)
{ {
builder.AddFilter((category, level) => builder.AddFilter((category, level) =>
{ {

5
src/Squidex/Config/Orleans/OrleansServices.cs

@ -28,6 +28,11 @@ namespace Squidex.Config.Orleans
{ {
services.AddOrleans(config, environment, builder => services.AddOrleans(config, environment, builder =>
{ {
builder.ConfigureLogging(logging =>
{
logging.AddFilters();
});
builder.ConfigureServices(siloServices => builder.ConfigureServices(siloServices =>
{ {
siloServices.AddSingleton<IIncomingGrainCallFilter, LocalCacheFilter>(); siloServices.AddSingleton<IIncomingGrainCallFilter, LocalCacheFilter>();

2
src/Squidex/Program.cs

@ -31,7 +31,7 @@ namespace Squidex
{ {
builder.AddConfiguration(hostingContext.Configuration.GetSection("logging")); builder.AddConfiguration(hostingContext.Configuration.GetSection("logging"));
builder.AddSemanticLog(); builder.AddSemanticLog();
builder.AddFilter(); builder.AddFilters();
}) })
.ConfigureAppConfiguration((hostContext, builder) => .ConfigureAppConfiguration((hostContext, builder) =>
{ {

Loading…
Cancel
Save