secs_learn/Program.cs
| using DeviceWorkerService; |
| using Microsoft.Extensions.DependencyInjection; |
| using Microsoft.Extensions.Hosting; |
| |
| Host.CreateDefaultBuilder(args) |
| .ConfigureServices((hostContext, services) => |
| { |
| services.AddSecs4Net<DeviceLogger>(hostContext.Configuration); |
| }).Build().Run(); |
| |
secs_learn/DeviceWorkerService.cs
| using Microsoft.Extensions.Configuration; |
| using Microsoft.Extensions.DependencyInjection; |
| using Secs4Net; |
| using System.Diagnostics.CodeAnalysis; |
| |
| namespace DeviceWorkerService; |
| |
| public static class ServiceProvider |
| { |
| public static IServiceCollection AddSecs4Net<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TLogger>(this IServiceCollection services, IConfiguration configuration) |
| where TLogger : class, ISecsGemLogger |
| { |
| var configSection = configuration.GetSection("secs4net"); |
| services.Configure<SecsGemOptions>(configSection); |
| services.AddSingleton<ISecsConnection, HsmsConnection>(); |
| services.AddSingleton<ISecsGem, SecsGem>(); |
| services.AddSingleton<ISecsGemLogger, TLogger>(); |
| return services; |
| } |
| } |
| |
secs_learn/DeviceLogger.cs
| using Microsoft.Extensions.Logging; |
| using Secs4Net; |
| using Secs4Net.Sml; |
| using System; |
| |
| namespace DeviceWorkerService; |
| |
| internal sealed class DeviceLogger(ILogger<DeviceLogger> logger) : ISecsGemLogger |
| { |
| public void MessageIn(SecsMessage msg, int id) => logger.LogTrace($"<-- [0x{id:X8}] {msg.ToSml()}"); |
| public void MessageOut(SecsMessage msg, int id) => logger.LogTrace($"--> [0x{id:X8}] {msg.ToSml()}"); |
| public void Debug(string msg) => logger.LogDebug(msg); |
| public void Info(string msg) => logger.LogInformation(msg); |
| public void Warning(string msg) => logger.LogWarning(msg); |
| public void Error(string msg, SecsMessage? message, Exception? ex) => logger.LogError(ex, $"{msg} {message}\n"); |
| } |
| |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2022-01-23 tampermonkey 油猴脚本 博客园美化