fix:优化请求日志的时间时区
This commit is contained in:
parent
99ed03b4e4
commit
0bb45537b3
32
src/InterfaceForward.Api/DateTimeJsonConverter.cs
Normal file
32
src/InterfaceForward.Api/DateTimeJsonConverter.cs
Normal 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));
|
||||
}
|
||||
}
|
||||
@ -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()
|
||||
|
||||
26
src/InterfaceForward.Api/LongJsonConverter.cs
Normal file
26
src/InterfaceForward.Api/LongJsonConverter.cs
Normal 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());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user