fix(s7): thread ILoggerFactory into the S7 driver factory (#602 CONV-3)
Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using ZB.MOM.WW.OtOpcUa.Core.Abstractions;
|
||||
using ZB.MOM.WW.OtOpcUa.Core.Hosting;
|
||||
|
||||
@@ -16,22 +17,32 @@ public static class S7DriverFactoryExtensions
|
||||
public const string DriverTypeName = "S7";
|
||||
|
||||
/// <summary>Registers the S7 driver factory with the registry.</summary>
|
||||
/// <remarks>
|
||||
/// The optional <paramref name="loggerFactory"/> is captured at registration time and used to
|
||||
/// build an <see cref="ILogger{S7Driver}"/> per driver instance — without it the driver runs on
|
||||
/// the null logger and none of its diagnostics (connect/reconnect, skipped tags, poll faults)
|
||||
/// reach the node log (CONV-3).
|
||||
/// </remarks>
|
||||
/// <param name="registry">The driver factory registry.</param>
|
||||
public static void Register(DriverFactoryRegistry registry)
|
||||
/// <param name="loggerFactory">Optional logger factory for driver instances.</param>
|
||||
public static void Register(DriverFactoryRegistry registry, ILoggerFactory? loggerFactory = null)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(registry);
|
||||
registry.Register(DriverTypeName, CreateInstance);
|
||||
registry.Register(DriverTypeName, (id, json) => CreateInstance(id, json, loggerFactory));
|
||||
}
|
||||
|
||||
/// <summary>Creates a new S7 driver instance from configuration.</summary>
|
||||
/// <param name="driverInstanceId">The unique identifier for the driver instance.</param>
|
||||
/// <param name="driverConfigJson">The JSON configuration for the driver.</param>
|
||||
/// <returns>A newly created S7 driver instance.</returns>
|
||||
internal static S7Driver CreateInstance(string driverInstanceId, string driverConfigJson)
|
||||
/// <param name="loggerFactory">Optional logger factory for the driver instance.</param>
|
||||
internal static S7Driver CreateInstance(
|
||||
string driverInstanceId, string driverConfigJson, ILoggerFactory? loggerFactory = null)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(driverInstanceId);
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(driverConfigJson);
|
||||
return new S7Driver(ParseOptions(driverInstanceId, driverConfigJson), driverInstanceId);
|
||||
return new S7Driver(ParseOptions(driverInstanceId, driverConfigJson), driverInstanceId,
|
||||
logger: loggerFactory?.CreateLogger<S7Driver>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -226,7 +226,7 @@ public static class DriverFactoryBootstrap
|
||||
// task, so the Tier A 5s Subscribe budget never covers the stream's lifetime.
|
||||
Driver.MTConnect.MTConnectDriverFactoryExtensions.Register(registry, loggerFactory);
|
||||
Driver.OpcUaClient.OpcUaClientDriverFactoryExtensions.Register(registry, loggerFactory, secretResolver);
|
||||
Driver.S7.S7DriverFactoryExtensions.Register(registry);
|
||||
Driver.S7.S7DriverFactoryExtensions.Register(registry, loggerFactory);
|
||||
Driver.Sql.SqlDriverFactoryExtensions.Register(registry, loggerFactory);
|
||||
Driver.TwinCAT.TwinCATDriverFactoryExtensions.Register(registry);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user