fix:优化请求日志的时间时区

This commit is contained in:
xiaolipro 2025-11-03 16:38:03 +08:00
parent 99ed03b4e4
commit 0bb45537b3
3 changed files with 69 additions and 0 deletions

View File

@ -0,0 +1,32 @@
using Newtonsoft.Json;
namespace InterfaceForward.Api;
public class DateTimeJsonConverter: JsonConverter
{
private readonly string _format;
public DateTimeJsonConverter(string format = "yyyy-MM-dd HH:mm:ss") => this._format = format;
public override bool CanConvert(Type objectType)
{
return objectType == typeof (DateTime) || objectType == typeof (DateTime?);
}
public override object? ReadJson(
JsonReader reader,
Type objectType,
object? existingValue,
JsonSerializer serializer)
{
if (reader.Value == null || string.IsNullOrEmpty(reader.Value.ToString()))
return (object) null;
DateTime result;
return DateTime.TryParse(reader.Value.ToString(), out result) ? (object) result : (object) new DateTime();
}
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
{
writer.WriteValue(((DateTime) value).ToString(this._format));
}
}

View File

@ -7,6 +7,7 @@ using Fake.Modularity;
using InterfaceForward.Application;
using InterfaceForward.Application.Filters;
using InterfaceForward.Domain.Shared.Helpers;
using Microsoft.AspNetCore.Mvc;
namespace InterfaceForward.Api;
@ -30,6 +31,16 @@ public class InterfaceForwardApiModule : FakeModule
services.AddMvc().AddNewtonsoftJson();
//Json格式化全局处理
context.Services.Configure<MvcNewtonsoftJsonOptions>(options =>
{
options.SerializerSettings.ContractResolver =
new Newtonsoft.Json.Serialization.
CamelCasePropertyNamesContractResolver(); //.DefaultContractResolver();
options.SerializerSettings.Converters.Add(new DateTimeJsonConverter("yyyy-MM-dd HH:mm:ss"));
options.SerializerSettings.Converters.Add(new LongJsonConverter());
});
services.AddFakeSwaggerGen()
.AddFakeExceptionFilter()
.AddFakeValidationActionFilter()

View File

@ -0,0 +1,26 @@
using Newtonsoft.Json;
namespace InterfaceForward.Api;
public class LongJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof (long) || objectType == typeof (long?);
}
public override object? ReadJson(
JsonReader reader,
Type objectType,
object? existingValue,
JsonSerializer serializer)
{
long result;
return reader.Value == null || string.IsNullOrEmpty(reader.Value.ToString()) ? (object) null : (long.TryParse(reader.Value.ToString(), out result) ? (object) result : (object) new DateTime());
}
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
{
writer.WriteValue(((long) value).ToString());
}
}