From 13a05a04c168c487449f4dec84e2923abb5ef544 Mon Sep 17 00:00:00 2001
From: xuejiaming <326308290@qq.com>
Date: Fri, 10 Jun 2022 20:36:48 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=9D=99=E6=80=81=E6=97=A5?=
=?UTF-8?q?=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Logger/InternalLoggerFactory.cs | 52 +++++++++++++++++++
.../QueryCompilerContextFactory.cs | 8 ++-
.../TableCreator/ShardingTableCreator.cs | 7 +--
...dingAutoCreateOperatorVirtualTableRoute.cs | 9 ++--
4 files changed, 62 insertions(+), 14 deletions(-)
create mode 100644 src/ShardingCore/Logger/InternalLoggerFactory.cs
diff --git a/src/ShardingCore/Logger/InternalLoggerFactory.cs b/src/ShardingCore/Logger/InternalLoggerFactory.cs
new file mode 100644
index 00000000..d42afc80
--- /dev/null
+++ b/src/ShardingCore/Logger/InternalLoggerFactory.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.Contracts;
+using System.Text;
+using System.Threading;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging.Abstractions;
+
+namespace ShardingCore.Logger
+{
+ ///
+ ///
+ ///
+ /// Author: xjm
+ /// Created: 2022/5/18 10:02:25
+ /// Email: 326308290@qq.com
+ public sealed class InternalLoggerFactory
+ {
+ static ILoggerFactory _defaultFactory;
+
+
+ static ILoggerFactory NewDefaultFactory()
+ {
+ var f = new NullLoggerFactory();
+ return f;
+ }
+
+ ///
+ /// Gets or sets the default factory.
+ ///
+ public static ILoggerFactory DefaultFactory
+ {
+ get
+ {
+ ILoggerFactory factory = Volatile.Read(ref _defaultFactory);
+ if (factory == null)
+ {
+ factory = NewDefaultFactory();
+ ILoggerFactory current = Interlocked.CompareExchange(ref _defaultFactory, factory, null);
+ if (current != null)
+ {
+ return current;
+ }
+ }
+ return factory;
+ }
+ set => Volatile.Write(ref _defaultFactory, value);
+ }
+ public static ILogger CreateLogger() => DefaultFactory.CreateLogger();
+ public static ILogger CreateLogger(string categoryName) => DefaultFactory.CreateLogger(categoryName);
+ }
+}
diff --git a/src/ShardingCore/Sharding/ShardingExecutors/QueryCompilerContextFactory.cs b/src/ShardingCore/Sharding/ShardingExecutors/QueryCompilerContextFactory.cs
index 389a9b6b..cb08bedb 100644
--- a/src/ShardingCore/Sharding/ShardingExecutors/QueryCompilerContextFactory.cs
+++ b/src/ShardingCore/Sharding/ShardingExecutors/QueryCompilerContextFactory.cs
@@ -10,13 +10,15 @@ using System;
using System.Linq;
using System.Linq.Expressions;
using ShardingCore.Extensions.InternalExtensions;
+using ShardingCore.Logger;
using ShardingCore.Sharding.Parsers.Abstractions;
namespace ShardingCore.Sharding.ShardingExecutors
{
public class QueryCompilerContextFactory : IQueryCompilerContextFactory
{
- private readonly ILogger _logger;
+ private static readonly ILogger _logger =
+ InternalLoggerFactory.CreateLogger();
private static readonly IQueryableCombine _enumerableQueryableCombine;
private static readonly IQueryableCombine _allQueryableCombine;
private static readonly IQueryableCombine _constantQueryableCombine;
@@ -32,10 +34,6 @@ namespace ShardingCore.Sharding.ShardingExecutors
_whereQueryableCombine = new WhereQueryableCombine();
}
- public QueryCompilerContextFactory(ILogger logger)
- {
- _logger = logger;
- }
public IQueryCompilerContext Create(IPrepareParseResult prepareParseResult)
{
diff --git a/src/ShardingCore/TableCreator/ShardingTableCreator.cs b/src/ShardingCore/TableCreator/ShardingTableCreator.cs
index 8c6e5097..3cfe5f36 100644
--- a/src/ShardingCore/TableCreator/ShardingTableCreator.cs
+++ b/src/ShardingCore/TableCreator/ShardingTableCreator.cs
@@ -10,6 +10,7 @@ using ShardingCore.Extensions;
using ShardingCore.Sharding.Abstractions;
using System;
using System.Threading;
+using ShardingCore.Logger;
namespace ShardingCore.TableCreator
{
@@ -21,14 +22,14 @@ namespace ShardingCore.TableCreator
*/
public class ShardingTableCreator : IShardingTableCreator where TShardingDbContext : DbContext, IShardingDbContext
{
- private readonly ILogger> _logger;
+ private static readonly ILogger> _logger =
+ InternalLoggerFactory.CreateLogger>();
private readonly IServiceProvider _serviceProvider;
private readonly IShardingEntityConfigOptions _entityConfigOptions;
private readonly IRouteTailFactory _routeTailFactory;
- public ShardingTableCreator(ILogger> logger, IServiceProvider serviceProvider, IShardingEntityConfigOptions entityConfigOptions, IRouteTailFactory routeTailFactory)
+ public ShardingTableCreator(IServiceProvider serviceProvider, IShardingEntityConfigOptions entityConfigOptions, IRouteTailFactory routeTailFactory)
{
- _logger = logger;
_serviceProvider = serviceProvider;
_entityConfigOptions = entityConfigOptions;
_routeTailFactory = routeTailFactory;
diff --git a/src/ShardingCore/VirtualRoutes/Abstractions/AbstractShardingAutoCreateOperatorVirtualTableRoute.cs b/src/ShardingCore/VirtualRoutes/Abstractions/AbstractShardingAutoCreateOperatorVirtualTableRoute.cs
index c4fcb955..1407f927 100644
--- a/src/ShardingCore/VirtualRoutes/Abstractions/AbstractShardingAutoCreateOperatorVirtualTableRoute.cs
+++ b/src/ShardingCore/VirtualRoutes/Abstractions/AbstractShardingAutoCreateOperatorVirtualTableRoute.cs
@@ -15,6 +15,7 @@ using ShardingCore.Core.VirtualRoutes;
using ShardingCore.Core.VirtualRoutes.TableRoutes.Abstractions;
using ShardingCore.Extensions;
using ShardingCore.Jobs.Abstaractions;
+using ShardingCore.Logger;
using ShardingCore.TableCreator;
namespace ShardingCore.VirtualRoutes.Abstractions
@@ -22,13 +23,9 @@ namespace ShardingCore.VirtualRoutes.Abstractions
[ExcludeFromCodeCoverage]
public abstract class AbstractShardingAutoCreateOperatorVirtualTableRoute : AbstractShardingOperatorVirtualTableRoute, IJob where TEntity : class
{
- private readonly ILogger> _logger;
+ private static readonly ILogger> _logger =
+ InternalLoggerFactory.CreateLogger>();
- protected AbstractShardingAutoCreateOperatorVirtualTableRoute()
- {
- _logger = ShardingContainer
- .GetService>>();
- }
///
/// 不可以设置一样
///