├── .azure-pipelines └── templates │ ├── docs │ ├── build-job.yaml │ └── build.yaml │ ├── log4tc │ ├── build-job.yaml │ ├── build-linux.yaml │ ├── build-windows.yaml │ └── test.yaml │ └── tclibrary │ ├── build-job.yaml │ └── build.yaml ├── .editorconfig ├── .gitattributes ├── .github └── release.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── azure-pipelines-ci.yml ├── azure-pipelines-release.yml ├── docs ├── .gitignore ├── Changelog.md ├── DocFxBuild.targets ├── Logo.svg ├── api │ └── toc.yml ├── assets │ ├── architektur.png │ ├── showcase.png │ └── showcase.svg ├── docfx.csproj ├── docfx.json ├── dotnet-tools.json ├── favicon.ico ├── gettingstarted │ ├── add_log4tc_lib.md │ ├── argument_logging.md │ ├── assets │ │ ├── Architektur.graphml │ │ ├── architektur.png │ │ ├── chronograf_log4tc_dashboard.png │ │ ├── log1.png │ │ ├── log2.png │ │ ├── log3.png │ │ ├── log4.png │ │ ├── log4TC.json │ │ ├── log4view.png │ │ ├── log4view_config.png │ │ ├── log4view_options.png │ │ ├── log5.png │ │ ├── log_folder.png │ │ ├── programdata.png │ │ ├── references.png │ │ └── solution.png │ ├── context_usage.md │ ├── create_twincat_project.md │ ├── intro.md │ ├── logger_usage.md │ ├── simple_logging.md │ ├── toc.yml │ ├── tools_log4view.md │ └── write_structured_values.md ├── index.md ├── internal │ ├── assets │ │ ├── Architektur.graphml │ │ ├── Kontextdiagramm.graphml │ │ ├── Kontextdiagramm.png │ │ ├── Lizenz-TAN-Generierung.graphml │ │ ├── Systemkomponenten.graphml │ │ └── Systemkomponenten.png │ ├── description.md │ ├── details.md │ ├── intro.md │ ├── licensing.md │ ├── links.md │ ├── project_poster.md │ ├── setup.md │ ├── sps.md │ └── toc.yml ├── print │ ├── FlyerA4 - Log4TC.docx │ ├── FlyerA4 - Log4TC.pdf │ ├── Logo.svg │ ├── LogoFinal.svg │ ├── LogoFinalBackground.svg │ ├── LogoFinalClean.svg │ ├── LogoFinalGitHub (1280x640).png │ ├── Product_Sheet.docx │ ├── log4tc_white_logo.svg │ └── mbc_log4tc_qr.png ├── reference │ ├── assets │ │ ├── setup_endwitherror.png │ │ ├── setup_service_links.png │ │ ├── setup_successfull.png │ │ ├── stup_log4View_networkstream.png │ │ └── vscode_log_viewer.png │ ├── graylog_output.md │ ├── index.md │ ├── influx_output.md │ ├── installation.md │ ├── loglevel.md │ ├── nlog_output.md │ ├── placeholder.md │ ├── service_config.md │ ├── sql_output.md │ ├── toc.yml │ └── tools.md ├── template │ └── public │ │ ├── main.css │ │ └── main.js └── toc.yml ├── library ├── mbc_Log4TC.library └── mbc_Log4TC_v0.2.1.library ├── readme.md └── source ├── AdsRouterConsoleApp ├── .dockerignore ├── .gitignore ├── .vscode │ ├── launch.json │ └── tasks.json ├── AdsRouterConsoleApp.sln ├── Directory.Build.props ├── Dockerfile ├── README.md ├── docs │ ├── run-as-docker-container.md │ └── run-beneath-TwinCATRouter.md └── src │ ├── AdsRouterConsoleApp.csproj │ ├── Program.cs │ ├── Worker.cs │ ├── appSettings.json │ ├── appsettingsSample.json │ ├── settings-bridged-network.env │ └── settings-host-network.env ├── Log4Tc ├── .dockerignore ├── .editorconfig ├── .gitignore ├── Directory.Build.props ├── Log4Tc.sln ├── Mbc.CodeAnalysis.ruleset ├── Mbc.Log4Tc.Dispatcher.Test │ ├── Filter │ │ ├── FilterConfigurationFactoryTest.cs │ │ ├── SimpleLogFilterTest.cs │ │ └── assets │ │ │ ├── EmptyFilter.json │ │ │ ├── MultipleSimpleFilter.json │ │ │ ├── SingleSimpleFilter.json │ │ │ └── StringFilter.json │ └── Mbc.Log4Tc.Dispatcher.Test.csproj ├── Mbc.Log4Tc.Dispatcher │ ├── AssemblyProperties.cs │ ├── Filter │ │ ├── AllMatchFilter.cs │ │ ├── FilterConfigurationFactory.cs │ │ ├── ILogFilter.cs │ │ ├── NoneMatchFilter.cs │ │ ├── OrFilter.cs │ │ └── SimpleLogFilter.cs │ ├── LogDispatcherExtensions.cs │ ├── LogDispatcherService.cs │ ├── Mbc.Log4Tc.Dispatcher.csproj │ └── OutputDispatch.cs ├── Mbc.Log4Tc.Model.Test │ ├── LogEntryTest.cs │ ├── Mbc.Log4Tc.Model.Test.csproj │ └── Message │ │ └── MessageFormatterTest.cs ├── Mbc.Log4Tc.Model │ ├── AssemblyProperties.cs │ ├── LogEntry.cs │ ├── LogLevel.cs │ ├── Mbc.Log4Tc.Model.csproj │ ├── Message │ │ ├── MessageFormatter.cs │ │ ├── MessageHoleToken.cs │ │ ├── MessageTemplateToken.cs │ │ └── MessageTextToken.cs │ └── OsPaths.cs ├── Mbc.Log4Tc.Output.Graylog.Test │ ├── GelfDataTest.cs │ └── Mbc.Log4Tc.Output.Graylog.Test.csproj ├── Mbc.Log4Tc.Output.Graylog │ ├── AssemblyProperties.cs │ ├── GelfData.cs │ ├── GraylogLog4TcOutputFactory.cs │ ├── GraylogLog4TcOutputPlugin.cs │ ├── GraylogOutput.cs │ ├── GraylogOutputSettings.cs │ └── Mbc.Log4Tc.Output.Graylog.csproj ├── Mbc.Log4Tc.Output.InfluxDb.Test │ ├── Mbc.Log4Tc.Output.InfluxDb.Test.csproj │ └── SysLogPointFactoryTest.cs ├── Mbc.Log4Tc.Output.InfluxDb │ ├── ArgumentPointFactory.cs │ ├── AssemblyProperties.cs │ ├── BasePointFactory.cs │ ├── IInfluxPointFactory.cs │ ├── InfluxDbLog4TcOutputFactory.cs │ ├── InfluxDbLog4TcOutputPlugin.cs │ ├── InfluxDbOutput.cs │ ├── InfluxDbOutputSettings.cs │ ├── Mbc.Log4Tc.Output.InfluxDb.csproj │ └── SyslogPointFactory.cs ├── Mbc.Log4Tc.Output.NLog.Test │ ├── CommonNLogTests.cs │ ├── Mbc.Log4Tc.Output.NLog.Test.csproj │ └── NLogLog4TcOutputTest.cs ├── Mbc.Log4Tc.Output.NLog │ ├── Extensions │ │ ├── AllEventPropertiesLayoutRenderer.cs │ │ └── Log4JXmlEventLayoutRenderer.cs │ ├── Mbc.Log4Tc.Output.NLog.csproj │ ├── NLog.config │ ├── NLog.config.log4view │ ├── NLog.config.textlogging │ ├── NLogLinux.config │ ├── NLogLog4TcOutput.cs │ ├── NLogLog4TcOutputConfiguration.cs │ ├── NLogLog4TcOutputFactory.cs │ ├── NLogLog4TcOutputInitializer.cs │ ├── NLogLog4TcOutputPlugin.cs │ └── NLogTarget │ │ ├── ApplicationInsightsTarget.cs │ │ ├── TargetPropertyWithContext.cs │ │ └── readme.md ├── Mbc.Log4Tc.Output.Sql │ ├── BaseSqlWriter.cs │ ├── DbValueType.cs │ ├── FullFlatSqlWriter.cs │ ├── Mbc.Log4Tc.Output.Sql.csproj │ ├── README.md │ ├── SimpleFlatSqlWriter.cs │ ├── SqlLog4TcOutputFactory.cs │ ├── SqlLog4TcOutputPlugin.cs │ ├── SqlOutput.cs │ └── SqlOutputSettings.cs ├── Mbc.Log4Tc.Output │ ├── IOutputFactory.cs │ ├── Mbc.Log4Tc.Output.csproj │ ├── OutputExtensions.cs │ └── OutputHandlerBase.cs ├── Mbc.Log4Tc.Plugin │ ├── IPlugin.cs │ ├── Log4TcPluginAttribute.cs │ ├── Mbc.Log4Tc.Plugin.csproj │ ├── PluginBuilder.cs │ ├── PluginExtensions.cs │ └── PluginLoader.cs ├── Mbc.Log4Tc.Receiver │ ├── AdsHostnameService.cs │ ├── AdsLogReceiver.cs │ ├── AdsLogReceiverExtensions.cs │ ├── AdsLogReceiverService.cs │ ├── ILogReceiver.cs │ ├── LogEntryEventArgs.cs │ └── Mbc.Log4Tc.Receiver.csproj ├── Mbc.Log4Tc.Service │ ├── InstallService.ps1 │ ├── Mbc.Log4Tc.Service.csproj │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── UninstallService.ps1 │ ├── appsettings.Development.json │ ├── appsettings.Production.json │ ├── appsettings.json │ ├── appsettingsInflux.json │ ├── appsettingsSample.json │ └── appsettingsSql.json ├── Mbc.Log4Tc.Setup.Wix │ ├── EULA.rtf │ ├── Fragments │ │ ├── Common │ │ │ └── Log4TcCommonStartmenu.wxs │ │ ├── Log4TcServiceFeature │ │ │ ├── Log4TcServiceInstall.wxs │ │ │ └── Log4TcServiceOutputFiles.wxs │ │ ├── Log4TcTwinCatLibFeature │ │ │ ├── Log4TcTwinCatLib.wxs │ │ │ ├── Log4TcTwinCatLibGettingStarted.wxs │ │ │ └── mbc_engineering_log4tc.tmc │ │ └── TwinCat3.wxs │ ├── Includes │ │ └── DefinitionsPlatform.wxi │ ├── Mbc.Log4Tc.Setup.Wix.wixproj │ ├── Package.en-us.wxl │ ├── Product.wxs │ └── Resources │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── log4TcBackground.png │ │ ├── mbcBackground.png │ │ └── mbcBanner.png ├── Mbc.Log4Tc.SmokeTest │ ├── Log4TcService.cs │ ├── Mbc.Log4Tc.SmokeTest.csproj │ ├── PlcControl.cs │ ├── SmokeTest.cs │ └── TestRecordingOutput.cs ├── Mbc.Log4Tc.Utils │ ├── DataAnnotations │ │ └── TypeClassValidationAttribute.cs │ └── Mbc.Log4Tc.Utils.csproj ├── dockerfile └── stylecop.json ├── TwinCat_Examples ├── .gitignore ├── GettingStarted │ ├── .gitignore │ ├── A_SimpleLogMessage │ │ ├── A_SimpleLogMessage.plcproj │ │ ├── MAIN.TcPOU │ │ └── PlcTask.TcTTO │ ├── B_LogMessageWithArg │ │ ├── B_LogMessageWithArg.plcproj │ │ ├── MAIN.TcPOU │ │ └── PlcTask.TcTTO │ ├── C_LogWithLogger │ │ ├── C_LogWithLogger.plcproj │ │ ├── MAIN.TcPOU │ │ └── PlcTask.TcTTO │ ├── D_LogWithContext │ │ ├── D_LogWithContext.plcproj │ │ ├── MAIN.TcPOU │ │ └── PlcTask.TcTTO │ ├── E_StructuredLogging │ │ ├── E_StructuredLogging.plcproj │ │ ├── MAIN.TcPOU │ │ └── PlcTask.TcTTO │ ├── GettingStarted.sln │ ├── GettingStarted.tsproj │ └── _Config │ │ └── PLC │ │ ├── A_SimpleLogMessage.xti │ │ ├── B_LogMessageWithArg.xti │ │ ├── C_LogWithLogger.xti │ │ ├── D_LogWithContext.xti │ │ ├── E_StructuredLogging.xti │ │ └── LoggingExample.xti ├── LICENSE ├── README.md ├── graylog │ ├── Plc │ │ ├── Plc.sln │ │ ├── Plc.tsproj │ │ ├── Plc1 │ │ │ ├── FB_LogTaskCycleTime.TcPOU │ │ │ ├── MAIN.TcPOU │ │ │ ├── PRG_SimulateLoad.TcPOU │ │ │ ├── PRG_SimulateLogs.TcPOU │ │ │ ├── Plc1.plcproj │ │ │ └── PlcTask.TcTTO │ │ └── _Config │ │ │ └── PLC │ │ │ └── Plc1.xti │ ├── README.md │ ├── appsettings.json │ ├── assets │ │ ├── graylog_add_to_query.png │ │ ├── graylog_message_detail.png │ │ ├── graylog_search.png │ │ └── input_settings_graylog.png │ └── docker-compose.yml ├── influx_on_beckhoff-rt-linux │ ├── .gitignore │ ├── appsettings.json │ ├── initdb.iql │ ├── log4TC_chronografDashbord.json │ ├── log4TC_pod.yaml │ └── readme.md └── influx_with_message │ ├── Plc │ ├── Plc.sln │ ├── Plc.tsproj │ ├── Plc1 │ │ ├── FB_LogTaskCycleTime.TcPOU │ │ ├── MAIN.TcPOU │ │ ├── PRG_SimulateLoad.TcPOU │ │ ├── PRG_SimulateLogs.TcPOU │ │ ├── PRG_SimulatedControlPlant.TcPOU │ │ ├── Plc1.plcproj │ │ ├── PlcTask.TcTTO │ │ └── Utils │ │ │ ├── FB_PT1.TcPOU │ │ │ └── FB_Plant.TcPOU │ └── _Config │ │ └── PLC │ │ └── Plc1.xti │ ├── README.md │ ├── appsettings.json │ ├── assets │ ├── chronograf_charts.png │ └── chronograf_log_viewer.png │ ├── docker-compose.yml │ ├── initdb.iql │ └── log4TC.json ├── TwinCat_Lib └── log4tc │ ├── .gitignore │ ├── log4tc.sln │ └── log4tc │ ├── _Config │ └── PLC │ │ ├── log4Tc_SmokeTest.xti │ │ ├── log4Tc_SmokeTest.xti.bak │ │ ├── log4Tc_Tester.xti │ │ ├── log4Tc_Tester.xti.bak │ │ ├── mbc_Log4TC.xti.bak │ │ └── mbc_log4tc.xti │ ├── log4Tc_SmokeTest │ ├── .gitignore │ ├── POUs │ │ └── MAIN.TcPOU │ ├── PlcTask.TcTTO │ └── log4Tc_SmokeTest.plcproj │ ├── log4Tc_Tester │ ├── .gitignore │ ├── GVLs │ │ └── GVL.TcGVL │ ├── POUs │ │ ├── CheckBounds.TcPOU │ │ ├── CheckLRangeSigned.TcPOU │ │ ├── CheckLRangeUnsigned.TcPOU │ │ ├── CheckPointer.TcPOU │ │ ├── CheckRangeSigned.TcPOU │ │ ├── CheckRangeUnsigned.TcPOU │ │ ├── FB_TcExternalTime.TcPOU │ │ ├── F_FUN.TcPOU │ │ ├── MAIN.TcPOU │ │ └── PRG_TestSimpleApi.TcPOU │ ├── PlcTask.TcTTO │ ├── _Libraries │ │ ├── beckhoff automation gmbh │ │ │ ├── tc2_standard │ │ │ │ └── 3.3.2.0 │ │ │ │ │ └── tc2_standard.compiled-library │ │ │ ├── tc2_system │ │ │ │ └── 3.4.21.0 │ │ │ │ │ └── tc2_system.compiled-library │ │ │ ├── tc2_utilities │ │ │ │ └── 3.3.35.0 │ │ │ │ │ └── tc2_utilities.compiled-library │ │ │ └── tc3_module │ │ │ │ └── 3.3.21.0 │ │ │ │ └── tc3_module.compiled-library │ │ ├── mbc engineering gmbh │ │ │ └── log4tc │ │ │ │ ├── 0.0.1 │ │ │ │ └── mbc_log4tc.library │ │ │ │ └── 0.0.2 │ │ │ │ └── mbc_log4tc_v.0.0.2.library │ │ ├── system │ │ │ ├── base interfaces │ │ │ │ └── 3.5.2.0 │ │ │ │ │ └── base_itfs.compiled-library │ │ │ ├── cmperrors2 interfaces │ │ │ │ └── 3.5.12.0 │ │ │ │ │ └── cmperrors2_itfs.compiled-library │ │ │ ├── sysdir │ │ │ │ ├── 3.5.12.0 │ │ │ │ │ └── sysdir.compiled-library │ │ │ │ └── 3.5.8.0 │ │ │ │ │ └── sysdir.compiled-library │ │ │ ├── sysfile │ │ │ │ └── 3.5.9.0 │ │ │ │ │ └── sysfile.compiled-library │ │ │ └── systypes2 interfaces │ │ │ │ └── 3.5.4.0 │ │ │ │ └── systypes_itfs.compiled-library │ │ └── www.tcunit.org │ │ │ └── tcunit │ │ │ └── 1.1.0.0 │ │ │ └── tcunit.library │ └── log4Tc_Tester.plcproj │ ├── log4tc.tsproj │ └── mbc_Log4TC │ ├── .gitignore │ ├── API │ ├── Context │ │ ├── FB_ScopedContext.TcPOU │ │ ├── F_LogContext.TcPOU │ │ └── I_ContextBuilder.TcIO │ ├── E_LogLevel.TcDUT │ ├── Full │ │ ├── FB_Logger.TcPOU │ │ └── FB_LoggerLAC.TcPOU │ ├── PRG_TaskLog.TcPOU │ └── Simple │ │ ├── Any │ │ ├── F_LogA1.TcPOU │ │ ├── F_LogA10.TcPOU │ │ ├── F_LogA2.TcPOU │ │ ├── F_LogA3.TcPOU │ │ ├── F_LogA4.TcPOU │ │ ├── F_LogA5.TcPOU │ │ ├── F_LogA6.TcPOU │ │ ├── F_LogA7.TcPOU │ │ ├── F_LogA8.TcPOU │ │ ├── F_LogA9.TcPOU │ │ ├── F_LogLA1.TcPOU │ │ ├── F_LogLA10.TcPOU │ │ ├── F_LogLA10C.TcPOU │ │ ├── F_LogLA1C.TcPOU │ │ ├── F_LogLA2.TcPOU │ │ ├── F_LogLA2C.TcPOU │ │ ├── F_LogLA3.TcPOU │ │ ├── F_LogLA3C.TcPOU │ │ ├── F_LogLA4.TcPOU │ │ ├── F_LogLA4C.TcPOU │ │ ├── F_LogLA5.TcPOU │ │ ├── F_LogLA5C.TcPOU │ │ ├── F_LogLA6.TcPOU │ │ ├── F_LogLA6C.TcPOU │ │ ├── F_LogLA7.TcPOU │ │ ├── F_LogLA7C.TcPOU │ │ ├── F_LogLA8.TcPOU │ │ ├── F_LogLA8C.TcPOU │ │ ├── F_LogLA9.TcPOU │ │ └── F_LogLA9C.TcPOU │ │ ├── F_Log.TcPOU │ │ ├── F_LogBuilder.TcPOU │ │ ├── F_LogC.TcPOU │ │ ├── F_LogL.TcPOU │ │ ├── F_LogLC.TcPOU │ │ ├── I_LogBuilder.TcIO │ │ └── TArg │ │ ├── F_LogL1.TcPOU │ │ ├── F_LogL10.TcPOU │ │ ├── F_LogL2.TcPOU │ │ ├── F_LogL3.TcPOU │ │ ├── F_LogL4.TcPOU │ │ ├── F_LogL5.TcPOU │ │ ├── F_LogL6.TcPOU │ │ ├── F_LogL7.TcPOU │ │ ├── F_LogL8.TcPOU │ │ └── F_LogL9.TcPOU │ ├── ApiTest.TcPOU │ ├── DUTs │ ├── E_CustomTypes.TcDUT │ ├── E_Scope.TcDUT │ ├── ST_Log4TcTaskInfo.TcDUT │ └── ST_ScopedContextStack.TcDUT │ ├── GVLs │ ├── Config.TcGVL │ ├── Const.TcGVL │ └── Log4TcInfo.TcGVL │ ├── ITFs │ └── I_LogEntryAdder.TcIO │ ├── POUs │ ├── FB_ContextBuilder.TcPOU │ ├── FB_Log4TcTask.TcPOU │ ├── FB_LogEntry.TcPOU │ ├── F_InternalLog.TcPOU │ ├── F_LogA.TcPOU │ ├── F_LogTArg.TcPOU │ ├── PRG_ScopedContextStack.TcPOU │ └── Utils │ │ ├── FB_LogBuffer.TcPOU │ │ ├── FB_RTC_Sync.TcPOU │ │ ├── F_DINT_TO_UINT_MAX.TcPOU │ │ └── IncUDINT.TcPOU │ ├── Test │ ├── FB_ContextBuilder_Test.TcPOU │ ├── PRG_Test.TcPOU │ └── PlcTask.TcTTO │ ├── _Libraries │ ├── beckhoff automation gmbh │ │ ├── tc2_standard │ │ │ └── 3.3.2.0 │ │ │ │ └── tc2_standard.compiled-library │ │ ├── tc2_system │ │ │ └── 3.4.21.0 │ │ │ │ └── tc2_system.compiled-library │ │ ├── tc2_utilities │ │ │ └── 3.3.35.0 │ │ │ │ └── tc2_utilities.compiled-library │ │ └── tc3_module │ │ │ └── 3.3.21.0 │ │ │ └── tc3_module.compiled-library │ └── system │ │ ├── base interfaces │ │ └── 3.5.2.0 │ │ │ └── base_itfs.compiled-library │ │ ├── cmperrors2 interfaces │ │ └── 3.5.12.0 │ │ │ └── cmperrors2_itfs.compiled-library │ │ ├── sysdir │ │ └── 3.5.12.0 │ │ │ └── sysdir.compiled-library │ │ ├── sysfile │ │ └── 3.5.9.0 │ │ │ └── sysfile.compiled-library │ │ └── systypes2 interfaces │ │ └── 3.5.4.0 │ │ └── systypes_itfs.compiled-library │ └── mbc_log4tc.plcproj └── WinCEKey.py /.azure-pipelines/templates/docs/build-job.yaml: -------------------------------------------------------------------------------- 1 | ############################################################## 2 | # Description: 3 | # This Job is used to build the log4TC documentation 4 | ############################################################## 5 | 6 | jobs: 7 | - job: 'build_docs' 8 | displayName: 'Create the documentation' 9 | pool: 10 | vmImage: 'ubuntu-24.04' 11 | steps: 12 | - checkout: self 13 | submodules: recursive 14 | - template: ${{ variables.Pipeline.Workspace }}/.azure-pipelines/templates/docs/build.yaml 15 | -------------------------------------------------------------------------------- /.azure-pipelines/templates/docs/build.yaml: -------------------------------------------------------------------------------- 1 | ############################################################## 2 | # Description: 3 | # This Stage is used to build and test log4TC for Windows 4 | # It generates all the artifacts msi & docs 5 | ############################################################## 6 | 7 | steps: 8 | - script: dotnet build $(System.DefaultWorkingDirectory)/docs/docfx.csproj 9 | displayName: "build docfx documentation" 10 | 11 | - task: CopyFiles@2 12 | displayName: 'Copy generated docfx docs files' 13 | inputs: 14 | SourceFolder: 'docs/_site' 15 | Contents: '**' 16 | TargetFolder: '$(Build.ArtifactStagingDirectory)/docs' 17 | CleanTargetFolder: true 18 | 19 | - publish: $(Build.ArtifactStagingDirectory)/docs 20 | displayName: 'Publish docs files' 21 | artifact: 'docs' 22 | -------------------------------------------------------------------------------- /.azure-pipelines/templates/log4tc/build-job.yaml: -------------------------------------------------------------------------------- 1 | ############################################################## 2 | # Description: 3 | # This Job is used to build and test log4TC 4 | ############################################################## 5 | 6 | jobs: 7 | - job: 'build_windows' 8 | displayName: 'Build the windows application' 9 | pool: 10 | vmImage: 'windows-2022' 11 | steps: 12 | - checkout: self 13 | submodules: recursive 14 | - template: ${{ variables.Pipeline.Workspace }}/.azure-pipelines/templates/log4tc/build-windows.yaml 15 | 16 | - job: 'build_linux' 17 | displayName: 'Build the linux application' 18 | pool: 19 | vmImage: 'ubuntu-24.04' 20 | steps: 21 | - checkout: self 22 | submodules: recursive 23 | - template: ${{ variables.Pipeline.Workspace }}/.azure-pipelines/templates/log4tc/build-linux.yaml 24 | -------------------------------------------------------------------------------- /.azure-pipelines/templates/tclibrary/build-job.yaml: -------------------------------------------------------------------------------- 1 | ############################################################## 2 | # Description: 3 | # This Job is used to build the log4TC documentation 4 | ############################################################## 5 | 6 | jobs: 7 | - job: 'build_library' 8 | displayName: 'Create the TC Library' 9 | pool: 10 | vmImage: 'ubuntu-24.04' 11 | steps: 12 | - checkout: self 13 | submodules: recursive 14 | - template: ${{ variables.Pipeline.Workspace }}/.azure-pipelines/templates/tclibrary/build.yaml 15 | -------------------------------------------------------------------------------- /.azure-pipelines/templates/tclibrary/build.yaml: -------------------------------------------------------------------------------- 1 | ############################################################## 2 | # Description: 3 | # This Stage is used to build and test log4TC for Windows 4 | # It generates all the artifacts msi & docs 5 | ############################################################## 6 | 7 | steps: 8 | - task: CopyFiles@2 9 | displayName: 'Copy generated docfx docs files' 10 | inputs: 11 | SourceFolder: 'library' 12 | Contents: '**' 13 | TargetFolder: '$(Build.ArtifactStagingDirectory)/tclibrary' 14 | CleanTargetFolder: true 15 | 16 | - publish: $(Build.ArtifactStagingDirectory)/tclibrary 17 | displayName: 'Publish tclibrary files' 18 | artifact: 'tclibrary' 19 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Author: michael.helfenstein@noser.com 2 | # Updated: 2024-01-11 3 | # Handle the Line Endings in git correctly 4 | # see: https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings#per-repository-settings 5 | # 6 | # Set the default behavior, if Git thinks a file is text (as opposed to binary), 7 | # also in case people don't have core.autocrlf set. 8 | * text=auto 9 | 10 | # Explicitly declare text files you want to always be normalized and converted 11 | # to native line endings on checkout. E.g., 12 | #*.c text 13 | 14 | # Declare files that will always have LF line endings on checkout. 15 | *.py text eol=lf 16 | *.azcli text eol=lf 17 | *.sh text eol=lf 18 | Jenkinsfile text eol=lf 19 | *.Jenkinsfile text eol=lf 20 | # Terraform stuff 21 | *.tf text eol=lf 22 | *.tfvars text eol=lf 23 | *.tfstate text eol=lf 24 | *.hcl text eol=lf 25 | 26 | 27 | # Denote all files that should not have line endings normalized, should not be 28 | # merged, and should not show in a textual diff. 29 | *.docm binary 30 | *.docx binary 31 | *.ico binary 32 | *.lib binary 33 | *.png binary 34 | *.pptx binary 35 | *.snk binary 36 | *.vsdx binary 37 | *.xps binary 38 | *.dll binary 39 | *.exe binary -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- 1 | # .github/release.yml to create Automatically generated release notes 2 | # https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes 3 | 4 | changelog: 5 | categories: 6 | - title: 🏕 Features 7 | labels: 8 | - '*' 9 | exclude: 10 | labels: 11 | - dependencies 12 | - bug 13 | - title: 🏕 Bugs 14 | labels: 15 | - bug 16 | exclude: 17 | labels: 18 | - dependencies 19 | # separate dependabot updates 20 | - title: 👒 Dependencies 21 | labels: 22 | - dependencies 23 | -------------------------------------------------------------------------------- /azure-pipelines-ci.yml: -------------------------------------------------------------------------------- 1 | ############################################################## 2 | # Description: 3 | # This Pipeline is used to CI build the application 4 | # It should check the code and run the tests in Pull Requests 5 | ############################################################## 6 | 7 | trigger: 8 | batch: true 9 | 10 | # Pull Request Trigger 11 | pr: 12 | branches: 13 | include: 14 | - master 15 | - main 16 | - dev 17 | 18 | stages: 19 | - stage: 'build' 20 | displayName: 'Build the applications' 21 | jobs: 22 | # log4TC 23 | - template: ${{ variables.Pipeline.Workspace }}/.azure-pipelines/templates/log4tc/build-job.yaml 24 | # Documentation 25 | - template: ${{ variables.Pipeline.Workspace }}/.azure-pipelines/templates/docs/build-job.yaml 26 | # tclibrary 27 | - template: ${{ variables.Pipeline.Workspace }}/.azure-pipelines/templates/tclibrary/build-job.yaml 28 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | ############### 2 | # folder # 3 | ############### 4 | /**/DROP/ 5 | /**/TEMP/ 6 | /**/packages/ 7 | /**/bin/ 8 | /**/obj/ 9 | _site 10 | log.txt 11 | .vscode/ -------------------------------------------------------------------------------- /docs/DocFxBuild.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/api/toc.yml: -------------------------------------------------------------------------------- 1 | ### YamlMime:TableOfContent 2 | - name: Log4TcPrototype 3 | -------------------------------------------------------------------------------- /docs/assets/architektur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/assets/architektur.png -------------------------------------------------------------------------------- /docs/assets/showcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/assets/showcase.png -------------------------------------------------------------------------------- /docs/docfx.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | net8.0 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "docfx": { 6 | "version": "2.78.2", 7 | "commands": [ 8 | "docfx" 9 | ], 10 | "rollForward": false 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/favicon.ico -------------------------------------------------------------------------------- /docs/gettingstarted/add_log4tc_lib.md: -------------------------------------------------------------------------------- 1 | # log4TC Library zum SPS-Projekt hinzufügen 2 | 3 | ## Library als Referenz hinzufügen 4 | 5 | Die log4TC-Library wird mit der Installation als SPS-Library registriert und muss noch in das Projekt eingebunden werden: 6 | 7 | 1. Doppelklick auf Order *References* im SPS-Projekt -> *Library Manager* wird geöffnet 8 | 1. "Add library" anwählen 9 | 1. Im Dialog den Suchtext "log4tc" eingeben; in der Liste sollte die Library "Log4TC" erscheinen 10 | 1. Doppelklick auf "Log4TC" 11 | 12 | Die Referenzen sollte wie folgt aussehen (Versionnummer kann variieren): 13 | 14 | ![References](assets/references.png) 15 | 16 | ## Nächster Schritt 17 | 18 | [Ausgabe einer einfachen Log-Meldung](simple_logging.md) 19 | 20 | -------------------------------------------------------------------------------- /docs/gettingstarted/assets/architektur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/architektur.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/chronograf_log4tc_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/chronograf_log4tc_dashboard.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/log1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/log1.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/log2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/log2.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/log3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/log3.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/log4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/log4.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/log4view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/log4view.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/log4view_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/log4view_config.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/log4view_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/log4view_options.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/log5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/log5.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/log_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/log_folder.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/programdata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/programdata.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/references.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/references.png -------------------------------------------------------------------------------- /docs/gettingstarted/assets/solution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/gettingstarted/assets/solution.png -------------------------------------------------------------------------------- /docs/gettingstarted/create_twincat_project.md: -------------------------------------------------------------------------------- 1 | # TwinCAT Projekt anlegen 2 | 3 | Um den Beispielen zu folgen, wird ein neues TwinCAT Projekt mit einem SPS-Projekt benötigt. Das Projekt muss für das Beispiel auf den gleichen Rechner aktiviert werden, auf dem auch log4TC installiert ist. Eine lokale Testlizenz ist ausreichend. 4 | 5 | ## Solution (TwinCAT Project) anlegen 6 | 7 | 1. Neues leeres TwinCAT XAE Projekt anlegen 8 | 1. Neues "Standard PLC Project" anlegen 9 | 10 | Es müssen keine speziellen Einstellungen vorgenommen werden. 11 | 12 | Die Visual Studio Solution sollte wie folgt aussehen: 13 | 14 | ![Solution](assets/solution.png) 15 | 16 | ## Nächster Schritt 17 | 18 | [log4TC-Library hinzufügen](add_log4tc_lib.md) -------------------------------------------------------------------------------- /docs/gettingstarted/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Erste Schritte Tour 2 | href: intro.md 3 | items: 4 | - name: TwinCat Project anlegen 5 | href: create_twincat_project.md 6 | - name: log4TC Library zum SPS-Projekt hinzufügen 7 | href: add_log4tc_lib.md 8 | - name: Ausgabe einer einfachen Log-Meldung 9 | href: simple_logging.md 10 | - name: Ausgabe von Log-Meldungen mit Argumenten 11 | href: argument_logging.md 12 | - name: Benutzung von Loggern 13 | href: logger_usage.md 14 | - name: Integration von Context-Eigenschaften 15 | href: context_usage.md 16 | - name: Log-Meldungen mit Log4View beobachten 17 | href: tools_log4view.md 18 | - name: Protokollierung von strukturierten Werten 19 | href: write_structured_values.md 20 | -------------------------------------------------------------------------------- /docs/internal/assets/Kontextdiagramm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/internal/assets/Kontextdiagramm.png -------------------------------------------------------------------------------- /docs/internal/assets/Systemkomponenten.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/internal/assets/Systemkomponenten.png -------------------------------------------------------------------------------- /docs/internal/details.md: -------------------------------------------------------------------------------- 1 | # Design Details 2 | 3 | ## Log-Event 4 | 5 | Der *Log-Event* beschreibt die Datenstruktur die beim Logging erfasst wird und über die interne Schnittstelle von der Echtzeit in die nicht Echtzeit zur weiteren Überarbeitung übertragen wird. 6 | 7 | Ein Log-Event besteht aus folgenden Daten: 8 | 9 | |Feld|Zweck| 10 | |---|---| 11 | |Log-Message|Enthält die eigentliche Log-Message als primitiven Datentyp (String, aber auch z.B. Integer). Dieses Feld ist zwingend.| 12 | |Log-Name|Name des Loggers, der die Log-Message auslöst. Wie bei Log-Systemen üblich kann der Name hierarchisch mit "." gegliedert werden| 13 | |Log-Level|Die wichtigkeit des Log-Events. Dient hauptsächlich zur Filterung. Der Level besteht aus einer vordefinierten Menge (Enum).| 14 | |TC-Timestamp|Der TwinCAT-Zeitstempel in der vollen Auflösung.| 15 | |PC-Timestamp|Der PC-Zeitstempel der normalen Uhr.| 16 | |Message Arguments|Enthält die Argumente der Message, sofern welche vorhanden sind.| 17 | |Message Attributes|Enthält optionale Attribute um eine Log-Message genauer zu beschreiben bzw. eine Context zu definieren.| 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | TODO: 26 | * Kann der TwinCAT-Zeitstempel durch Ticks noch genauer definiert werden? -------------------------------------------------------------------------------- /docs/internal/intro.md: -------------------------------------------------------------------------------- 1 | # Einführung 2 | 3 | ## Anwendungsbereich 4 | 5 | Das *log4tc* ist ein Softwarepaket, das auf TwinCAT-Systemen installiert werden kann, um Log-Meldungen der TwinCAT-Runtime zu erfassen und weiterzuverarbeiten wie z. B. speichern oder visualisieren. Es dient damit der Fehlersuche, Auditing und Protokollierung. 6 | 7 | Das *log4tc* wird von der mbc als kommerzielles Add-On Produkt für TwinCAT vertrieben und gepflegt. Für interessierte Kunden sollen kostenlose eingeschränkte Testversionen möglich sein. 8 | 9 | Der grundlegende Funktionsumfang orientiert sich an der etablierten [NLog-Platform](https://nlog-project.org). 10 | 11 | 12 | ## Referenzen 13 | 14 | Message Templates (Structured Logging): 15 | https://messagetemplates.org/ 16 | 17 | NLog-Homepage: 18 | https://nlog-project.org 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/internal/licensing.md: -------------------------------------------------------------------------------- 1 | # Lizenzierung 2 | 3 | Draft 4 | 5 | ## Test-Lizenz / Entwickler-Lizenz 6 | 7 | * alle Features 8 | * Einschränkung auf max. 10000 Meldungen (Mike: eher nicht beschränken) 9 | * Einschränkung auf max. 12h 10 | 11 | ## Runtime-Lizenz 12 | 13 | * Lizenzierung über Beckhoff (weiter Abklärung notwendig) 14 | * Abhängig von Leistungsklasse (Performance-Level) 15 | * P90: 250Fr. inkl. 1 Jahr Updates 16 | * P40: 100Fr. inkl. 1 Jahr Update 17 | * Update Verlängerung: 50Fr/Jahr (eher nicht, wegen verpflichtung; Update-Preis) 18 | * Staffelpreise? 19 | * Support-Packages? 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /docs/internal/links.md: -------------------------------------------------------------------------------- 1 | # Links 2 | 3 | Hier sollen alle LInks zu log4TC gesammelt werden. 4 | 5 | * [Dokumentation auf Github Pages ](https://mbc-engineering.github.io/log4TC/) 6 | * [Devops auf Azure](https://dev.azure.com/mbc-engineering/log4tc) 7 | 8 | -------------------------------------------------------------------------------- /docs/internal/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Log4Tc Problemlösung 2 | href: project_poster.md 3 | items: 4 | - name: Beschreibung 5 | href: description.md 6 | - name: Details 7 | href: details.md 8 | - name: SPS 9 | href: sps.md 10 | -------------------------------------------------------------------------------- /docs/print/FlyerA4 - Log4TC.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/print/FlyerA4 - Log4TC.docx -------------------------------------------------------------------------------- /docs/print/FlyerA4 - Log4TC.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/print/FlyerA4 - Log4TC.pdf -------------------------------------------------------------------------------- /docs/print/LogoFinalBackground.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/print/LogoFinalGitHub (1280x640).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/print/LogoFinalGitHub (1280x640).png -------------------------------------------------------------------------------- /docs/print/Product_Sheet.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/print/Product_Sheet.docx -------------------------------------------------------------------------------- /docs/print/mbc_log4tc_qr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/print/mbc_log4tc_qr.png -------------------------------------------------------------------------------- /docs/reference/assets/setup_endwitherror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/reference/assets/setup_endwitherror.png -------------------------------------------------------------------------------- /docs/reference/assets/setup_service_links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/reference/assets/setup_service_links.png -------------------------------------------------------------------------------- /docs/reference/assets/setup_successfull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/reference/assets/setup_successfull.png -------------------------------------------------------------------------------- /docs/reference/assets/stup_log4View_networkstream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/reference/assets/stup_log4View_networkstream.png -------------------------------------------------------------------------------- /docs/reference/assets/vscode_log_viewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/docs/reference/assets/vscode_log_viewer.png -------------------------------------------------------------------------------- /docs/reference/index.md: -------------------------------------------------------------------------------- 1 | # Referenz 2 | 3 | * [Installation](installation.md) 4 | * [log4TC Servicekonfiguration](service_config.md) 5 | * [Log-Level](loglevel.md) 6 | * [NLog-Ausgabe](nlog_output.md) 7 | * [Graylog-Ausgabe](graylog_output.md) 8 | * [InfluxDB-Ausgabe](influx_output.md) 9 | * [SQL-Ausgabe](sql_output.md) 10 | * [Platzhaler in Meldungen](placeholder.md) 11 | * [Tools](tools.md) 12 | -------------------------------------------------------------------------------- /docs/reference/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Werkzeuge 2 | href: tools.md 3 | - name: Formatierung 4 | href: placeholder.md 5 | - name: Loglevel 6 | href: loglevel.md 7 | - name: NLog-Ausgabeplugin 8 | href: nlog_output.md 9 | - name: Graylog-Ausgabeplugin 10 | href: graylog_output.md 11 | - name: InfluxDB-Ausgabeplugin 12 | href: influx_output.md 13 | - name: SQL-Ausgabeplugin 14 | href: sql_output.md 15 | - name: Installation 16 | href: installation.md 17 | - name: log4TC Servicekonfiguration 18 | href: service_config.md 19 | -------------------------------------------------------------------------------- /docs/template/public/main.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Licensed to the .NET Foundation under one or more agreements. 3 | * The .NET Foundation licenses this file to you under the MIT license. 4 | */ 5 | 6 | /* Checkout https://getbootstrap.com/docs/5.3/customize/color/ for more customization options */ 7 | body { 8 | --bs-link-color-rgb: 66, 184, 131 !important; 9 | --bs-link-hover-color-rgb: 64, 180, 128 !important; 10 | } 11 | -------------------------------------------------------------------------------- /docs/template/public/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Licensed to the .NET Foundation under one or more agreements. 3 | * The .NET Foundation licenses this file to you under the MIT license. 4 | */ 5 | 6 | export default { 7 | iconLinks: [ 8 | { 9 | icon: 'github', 10 | href: 'https://github.com/mbc-engineering/log4TC', 11 | title: 'GitHub' 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /docs/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Erste Schritte 2 | href: gettingstarted/intro.md 3 | - name: Referenzen 4 | href: reference/ 5 | - name: Changelog 6 | href: Changelog.md 7 | -------------------------------------------------------------------------------- /library/mbc_Log4TC.library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/library/mbc_Log4TC.library -------------------------------------------------------------------------------- /library/mbc_Log4TC_v0.2.1.library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/library/mbc_Log4TC_v0.2.1.library -------------------------------------------------------------------------------- /source/AdsRouterConsoleApp/.dockerignore: -------------------------------------------------------------------------------- 1 | [b|B]in 2 | [O|o]bj 3 | **/.classpath 4 | **/.dockerignore 5 | **/.env 6 | **/.git 7 | **/.gitignore 8 | **/.project 9 | **/.settings 10 | **/.toolstarget 11 | **/.vs 12 | **/.vscode 13 | **/*.*proj.user 14 | **/*.dbmdl 15 | **/*.jfm 16 | **/azds.yaml 17 | **/bin 18 | **/charts 19 | **/docker-compose* 20 | **/Dockerfile* 21 | **/node_modules 22 | **/npm-debug.log 23 | **/obj 24 | **/secrets.dev.yaml 25 | **/values.dev.yaml 26 | **/testresults 27 | LICENSE 28 | README.md 29 | **/**/testresults 30 | -------------------------------------------------------------------------------- /source/AdsRouterConsoleApp/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to find out which attributes exist for C# debugging 3 | // Use hover for the description of the existing attributes 4 | // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Docker .NET Core Launch", 9 | "type": "docker", 10 | "request": "launch", 11 | "preLaunchTask": "docker-run: debug", 12 | "netCore": { 13 | "appProject": "${workspaceFolder}/src/AdsRouterConsoleApp.csproj" 14 | } 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /source/AdsRouterConsoleApp/Directory.Build.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 7 | 8 | Log4Tc-AdsRouter 9 | mbc Log4Tc-adsRouter 10 | 11 | Simple TCP/IP ADS Router Console Application for use on systems without TwinCAT installation / setup. 12 | Console ADS Router with AdsServer that is required to connect from log4TC Service 13 | 14 | bqstony 15 | mbc-engineering 16 | Copyright © mbc-engineering 17 | 18 | 24.11.08 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /source/AdsRouterConsoleApp/src/appSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "AmsRouter": { 3 | "Name": "LocalSystem", 4 | "NetId": "1.1.1.1.1.1", 5 | "TcpPort": 48898, 6 | "RemoteConnections": [ 7 | { 8 | "Name": "RemoteSystem", 9 | "Address": "192.168.0.2", 10 | "NetId": "2.2.2.2.1.1", 11 | "Type": "TCP_IP" 12 | } 13 | ] 14 | }, 15 | "Logging": { 16 | "LogLevel": { 17 | "Default": "Information", 18 | "System": "Information", 19 | "Microsoft": "Information" 20 | }, 21 | "Console": { 22 | "IncludeScopes": true 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /source/AdsRouterConsoleApp/src/appsettingsSample.json: -------------------------------------------------------------------------------- 1 | { 2 | "AmsRouter": { 3 | "Name": "LocalSystem", 4 | "NetId": "172.19.13.9.1.1", 5 | "TcpPort": 48898, 6 | "RemoteConnections": [ 7 | { 8 | "Name": "RemoteSystem", 9 | "Address": "10.10.1.122", 10 | "NetId": "172.21.208.1.1.1", 11 | "Type": "TCP_IP" 12 | } 13 | ] 14 | }, 15 | "Logging": { 16 | "LogLevel": { 17 | "Default": "Information", 18 | "System": "Information", 19 | "Microsoft": "Information" 20 | }, 21 | "Console": { 22 | "IncludeScopes": true 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /source/AdsRouterConsoleApp/src/settings-bridged-network.env: -------------------------------------------------------------------------------- 1 | # Alternative settings via Environment Variables 2 | # using config.AddEnvironmentVariables("ENV_") in ConfigureAppConfiguration 3 | 4 | # Basic ADS-Router config which has to match StaticRoutes on TwinCAT-Host systems 5 | ENV_AmsRouter__Name=AdsRouterConsole 6 | ENV_AmsRouter__NetId=55.123.98.42.1.1 7 | 8 | # IP and TCP socket on which the ADS-Router should listen on for incoming client connections 9 | ENV_AmsRouter__LoopbackIP=172.17.0.2 10 | ENV_AmsRouter__LoopbackPort=48900 11 | 12 | # Setting to accept incoming ADS-Client connections from the private container subnetwork 13 | ENV_AmsRouter__LoopbackExternalSubnet=172.17.0.0/16 14 | 15 | # Indexed List of remote connections to TwinCAT Hosts 16 | # First TwinCAT-Host 17 | ENV_AmsRouter__RemoteConnections__0__Name=TwinCAT-Host 18 | ENV_AmsRouter__RemoteConnections__0__Address=192.168.178.72 19 | ENV_AmsRouter__RemoteConnections__0__NetId=5.29.122.232.1.1 20 | 21 | # Another sample TwinCAT-Host 22 | ENV_AmsRouter__RemoteConnections__1__Name=Another-TwinCAT-Host 23 | ENV_AmsRouter__RemoteConnections__1__Address=192.168.178.74 24 | ENV_AmsRouter__RemoteConnections__1__NetId=19.58.12.202.1.1 25 | 26 | # Verbose log output 27 | ENV_Logging__LogLevel__Default=Debug -------------------------------------------------------------------------------- /source/AdsRouterConsoleApp/src/settings-host-network.env: -------------------------------------------------------------------------------- 1 | # Alternative settings via Environment Variables 2 | # using config.AddEnvironmentVariables("ENV_") in ConfigureAppConfiguration 3 | 4 | # Basic ADS-Router config which has to match StaticRoutes on TwinCAT-Host systems 5 | ENV_AmsRouter__Name=AdsRouterConsoleApp 6 | ENV_AmsRouter__NetId=55.123.98.42.1.1 7 | 8 | # Indexed List of remote connections to TwinCAT Hosts 9 | # First TwinCAT-Host 10 | ENV_AmsRouter__RemoteConnections__0__Name=TwinCAT-Host 11 | ENV_AmsRouter__RemoteConnections__0__Address=192.168.178.72 12 | ENV_AmsRouter__RemoteConnections__0__NetId=5.29.122.232.1.1 13 | 14 | # Another sample TwinCAT-Host 15 | ENV_AmsRouter__RemoteConnections__1__Name=Another-TwinCAT-Host 16 | ENV_AmsRouter__RemoteConnections__1__Address=192.168.178.74 17 | ENV_AmsRouter__RemoteConnections__1__NetId=19.58.12.202.1.1 18 | 19 | # Verbose log output 20 | #ENV_Logging__LogLevel__Default=Debug 21 | ENV_Logging__LogLevel__Default=Information -------------------------------------------------------------------------------- /source/Log4Tc/.dockerignore: -------------------------------------------------------------------------------- 1 | [b|B]in 2 | [O|o]bj 3 | **/.classpath 4 | **/.dockerignore 5 | **/.env 6 | **/.git 7 | **/.gitignore 8 | **/.project 9 | **/.settings 10 | **/.toolstarget 11 | **/.vs 12 | **/.vscode 13 | **/*.*proj.user 14 | **/*.dbmdl 15 | **/*.jfm 16 | **/azds.yaml 17 | **/bin 18 | **/charts 19 | **/docker-compose* 20 | **/Dockerfile* 21 | **/node_modules 22 | **/npm-debug.log 23 | **/obj 24 | **/secrets.dev.yaml 25 | **/values.dev.yaml 26 | **/testresults 27 | LICENSE 28 | README.md 29 | **/**/testresults 30 | -------------------------------------------------------------------------------- /source/Log4Tc/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome:http://EditorConfig.org 2 | 3 | root = true 4 | 5 | # Don't use tabs for indentation. 6 | [*] 7 | indent_style = space 8 | 9 | [*.{cs,csx}] 10 | ident_size = 4 11 | ident_style = space 12 | insert_final_newline = true; 13 | 14 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher.Test/Filter/assets/EmptyFilter.json: -------------------------------------------------------------------------------- 1 | { 2 | } -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher.Test/Filter/assets/MultipleSimpleFilter.json: -------------------------------------------------------------------------------- 1 | { 2 | "Filter": [ 3 | { 4 | "Logger": "foo" 5 | }, 6 | { 7 | "Logger": "bar" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher.Test/Filter/assets/SingleSimpleFilter.json: -------------------------------------------------------------------------------- 1 | { 2 | "Filter": { 3 | "Logger": "foo" 4 | } 5 | } -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher.Test/Filter/assets/StringFilter.json: -------------------------------------------------------------------------------- 1 | { 2 | "Filter": "String" 3 | } -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher/AssemblyProperties.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | 3 | [assembly:InternalsVisibleTo("Mbc.Log4Tc.Dispatcher.Test")] 4 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher/Filter/AllMatchFilter.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Model; 2 | 3 | namespace Mbc.Log4Tc.Dispatcher.Filter 4 | { 5 | /// 6 | /// A which matches any . 7 | /// 8 | public class AllMatchFilter : ILogFilter 9 | { 10 | public static readonly AllMatchFilter Default = new AllMatchFilter(); 11 | 12 | public bool Matches(LogEntry logEntry) => true; 13 | 14 | public override string ToString() => "Filter(*)"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher/Filter/ILogFilter.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Model; 2 | 3 | namespace Mbc.Log4Tc.Dispatcher.Filter 4 | { 5 | /// 6 | /// Filter implementation for . 7 | /// 8 | public interface ILogFilter 9 | { 10 | /// 11 | /// Checks if this filter matches the given . 12 | /// 13 | /// The log entry for which the filter should be applied. 14 | /// true if this filter matches the , otherweise false 15 | bool Matches(LogEntry logEntry); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher/Filter/NoneMatchFilter.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Model; 2 | 3 | namespace Mbc.Log4Tc.Dispatcher.Filter 4 | { 5 | /// 6 | /// A which matches no . 7 | /// 8 | public class NoneMatchFilter : ILogFilter 9 | { 10 | public static readonly NoneMatchFilter Default = new NoneMatchFilter(); 11 | 12 | public bool Matches(LogEntry logEntry) => false; 13 | 14 | public override string ToString() => "Filter(none)"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher/Filter/OrFilter.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Model; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | namespace Mbc.Log4Tc.Dispatcher.Filter 6 | { 7 | /// 8 | /// Implements a which combines 9 | /// multiple with a or operation. 10 | /// 11 | public class OrFilter : ILogFilter 12 | { 13 | private readonly IReadOnlyList _filter; 14 | 15 | internal IEnumerable Filter => _filter; 16 | 17 | public OrFilter(IEnumerable filter) 18 | { 19 | _filter = new List(filter).AsReadOnly(); 20 | } 21 | 22 | public bool Matches(LogEntry logEntry) 23 | { 24 | return _filter.All(x => x.Matches(logEntry)); 25 | } 26 | 27 | public override string ToString() 28 | { 29 | return $"Or({string.Join(",", _filter.Select(x => x.ToString()))})"; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher/LogDispatcherExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Configuration; 2 | using Microsoft.Extensions.DependencyInjection; 3 | 4 | namespace Mbc.Log4Tc.Dispatcher 5 | { 6 | public static class LogDispatcherExtensions 7 | { 8 | public static IServiceCollection AddLog4TcDispatcher(this IServiceCollection services) 9 | { 10 | services.AddHostedService(); 11 | 12 | return services; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Dispatcher/Mbc.Log4Tc.Dispatcher.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | all 23 | runtime; build; native; contentfiles; analyzers; buildtransitive 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Model/AssemblyProperties.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | 3 | [assembly:InternalsVisibleTo("Mbc.Log4Tc.Model.Test")] 4 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Model/LogLevel.cs: -------------------------------------------------------------------------------- 1 | namespace Mbc.Log4Tc.Model 2 | { 3 | public enum LogLevel 4 | { 5 | Trace = 0, 6 | Debug = 1, 7 | Info = 2, 8 | Warn = 3, 9 | Error = 4, 10 | Fatal = 5, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Model/Mbc.Log4Tc.Model.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | all 14 | runtime; build; native; contentfiles; analyzers; buildtransitive 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Model/Message/MessageHoleToken.cs: -------------------------------------------------------------------------------- 1 | using Optional; 2 | 3 | namespace Mbc.Log4Tc.Model.Message 4 | { 5 | internal class MessageHoleToken : MessageTemplateToken 6 | { 7 | public MessageHoleToken(string label, int alignment, string format) 8 | { 9 | Label = label; 10 | Alignment = alignment; 11 | Format = format; 12 | if (int.TryParse(Label, out int index)) 13 | { 14 | Index = index.Some(); 15 | } 16 | else 17 | { 18 | Index = Option.None(); 19 | } 20 | } 21 | 22 | public string Label { get; } 23 | public int Alignment { get; } 24 | public string Format { get; } 25 | public Option Index { get; } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Model/Message/MessageTemplateToken.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Threading.Tasks; 5 | 6 | namespace Mbc.Log4Tc.Model.Message 7 | { 8 | internal abstract class MessageTemplateToken 9 | { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Model/Message/MessageTextToken.cs: -------------------------------------------------------------------------------- 1 | namespace Mbc.Log4Tc.Model.Message 2 | { 3 | internal class MessageTextToken : MessageTemplateToken 4 | { 5 | public MessageTextToken(string text) 6 | { 7 | Text = text; 8 | } 9 | 10 | public string Text { get; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Graylog.Test/GelfDataTest.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using Xunit; 3 | 4 | namespace Mbc.Log4Tc.Output.Graylog.Test 5 | { 6 | public class GelfDataTest 7 | { 8 | [Fact] 9 | public void SerializeGelfData_ShouldMatchSpec() 10 | { 11 | // Arrange 12 | var gelf = new GelfData 13 | { 14 | Host = "example.org", 15 | ShortMessage = "A short message that helps you identify what is going on", 16 | FullMessage = "Backtrace here more stuff", 17 | Timestamp = 1385053862.3072M, 18 | Level = 1, 19 | }; 20 | 21 | gelf.Add("user_id", 9001); 22 | gelf.Add("_some_info", "foo"); 23 | 24 | // Act 25 | var json = gelf.ToJson(); 26 | 27 | // Assert 28 | json.Should().Be("{\"version\":\"1.1\",\"host\":\"example.org\",\"short_message\":\"A short message that helps you identify what is going on\",\"full_message\":\"Backtrace here more stuff\",\"timestamp\":1385053862.3072,\"level\":1,\"_user_id\":9001,\"_some_info\":\"foo\"}"); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Graylog.Test/Mbc.Log4Tc.Output.Graylog.Test.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | all 15 | runtime; build; native; contentfiles; analyzers; buildtransitive 16 | 17 | 18 | all 19 | runtime; build; native; contentfiles; analyzers; buildtransitive 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | all 30 | runtime; build; native; contentfiles; analyzers; buildtransitive 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Graylog/AssemblyProperties.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | 3 | [assembly:InternalsVisibleTo("Mbc.Log4Tc.Output.Graylog.Test")] 4 | 5 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Graylog/GraylogLog4TcOutputFactory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Configuration; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using System; 4 | using System.ComponentModel.DataAnnotations; 5 | 6 | namespace Mbc.Log4Tc.Output.Graylog 7 | { 8 | internal class GraylogLog4TcOutputFactory : IOutputFactory 9 | { 10 | public string ShortTypeName => "graylog"; 11 | 12 | public OutputHandlerBase Create(IServiceProvider serviceProvider, IConfigurationSection outputConfiguration) 13 | { 14 | var config = new GraylogOutputSettings(); 15 | outputConfiguration.Bind(config); 16 | Validator.ValidateObject(config, new ValidationContext(config)); 17 | return ActivatorUtilities.CreateInstance(serviceProvider, config); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Graylog/GraylogLog4TcOutputPlugin.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Plugin; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.DependencyInjection; 4 | 5 | namespace Mbc.Log4Tc.Output.Graylog 6 | { 7 | public class GraylogLog4TcOutputPlugin : IPlugin 8 | { 9 | public void ConfigureServices(IServiceCollection services, IConfiguration configuration) 10 | { 11 | services.AddSingleton(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Graylog/GraylogOutputSettings.cs: -------------------------------------------------------------------------------- 1 | namespace Mbc.Log4Tc.Output.Graylog 2 | { 3 | internal class GraylogOutputSettings 4 | { 5 | public string GraylogHostname { get; set; } = "localhost"; 6 | 7 | public ushort GraylogPort { get; set; } = 12201; 8 | 9 | public GelfCompressionType GelfCompression { get; set; } = GelfCompressionType.Gzip; 10 | 11 | internal enum GelfCompressionType 12 | { 13 | None, 14 | Gzip, 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Graylog/Mbc.Log4Tc.Output.Graylog.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | all 18 | runtime; build; native; contentfiles; analyzers; buildtransitive 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.InfluxDb/AssemblyProperties.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | 3 | [assembly: InternalsVisibleTo("Mbc.Log4Tc.Output.InfluxDb.Test")] 4 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.InfluxDb/IInfluxPointFactory.cs: -------------------------------------------------------------------------------- 1 | using InfluxDB.Client.Writes; 2 | using Mbc.Log4Tc.Model; 3 | 4 | namespace Mbc.Log4Tc.Output.InfluxDb 5 | { 6 | internal interface IInfluxPointFactory 7 | { 8 | PointData CreatePoint(LogEntry logEntry); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.InfluxDb/InfluxDbLog4TcOutputFactory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Configuration; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using System; 4 | using System.ComponentModel.DataAnnotations; 5 | 6 | namespace Mbc.Log4Tc.Output.InfluxDb 7 | { 8 | public class InfluxDbLog4TcOutputFactory : IOutputFactory 9 | { 10 | public string ShortTypeName => "influxdb"; 11 | 12 | public OutputHandlerBase Create(IServiceProvider serviceProvider, IConfigurationSection outputConfiguration) 13 | { 14 | var config = new InfluxDbOutputSettings(); 15 | 16 | outputConfiguration.Bind(config); 17 | Validator.ValidateObject(config, new ValidationContext(config)); 18 | 19 | return ActivatorUtilities.CreateInstance(serviceProvider, config); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.InfluxDb/InfluxDbLog4TcOutputPlugin.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Plugin; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.DependencyInjection; 4 | 5 | namespace Mbc.Log4Tc.Output.InfluxDb 6 | { 7 | public class InfluxDbLog4TcOutputPlugin : IPlugin 8 | { 9 | public void ConfigureServices(IServiceCollection services, IConfiguration configuration) 10 | { 11 | services.AddSingleton(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.InfluxDb/InfluxDbOutputSettings.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace Mbc.Log4Tc.Output.InfluxDb 4 | { 5 | public class InfluxDbOutputSettings 6 | { 7 | [Required] 8 | [Url] 9 | public string Url { get; set; } 10 | 11 | public string Username { get; set; } 12 | 13 | public string Password { get; set; } 14 | 15 | [Required] 16 | public string Database { get; set; } 17 | 18 | public string RetentionPolicy { get; set; } 19 | 20 | public int WriteBatchSize { get; set; } = 20; 21 | 22 | public int WriteFlushIntervalMillis { get; set; } = 1000; 23 | 24 | public InfluxFormat Format { get; set; } = InfluxFormat.Arguments; 25 | 26 | public int SyslogFacilityCode { get; set; } = 16; 27 | 28 | public enum InfluxFormat 29 | { 30 | Arguments, 31 | Syslog, 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.InfluxDb/Mbc.Log4Tc.Output.InfluxDb.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | all 18 | runtime; build; native; contentfiles; analyzers; buildtransitive 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.NLog.Test/CommonNLogTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/Log4Tc/Mbc.Log4Tc.Output.NLog.Test/CommonNLogTests.cs -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.NLog/Mbc.Log4Tc.Output.NLog.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | all 19 | runtime; build; native; contentfiles; analyzers; buildtransitive 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.NLog/NLogLog4TcOutputConfiguration.cs: -------------------------------------------------------------------------------- 1 | namespace Mbc.Log4Tc.Output.NLog 2 | { 3 | public class NLogLog4TcOutputConfiguration 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.NLog/NLogLog4TcOutputFactory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Configuration; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using System; 4 | 5 | namespace Mbc.Log4Tc.Output.NLog 6 | { 7 | public class NLogLog4TcOutputFactory : IOutputFactory 8 | { 9 | public string ShortTypeName => "nlog"; 10 | 11 | public OutputHandlerBase Create(IServiceProvider serviceProvider, IConfigurationSection outputConfiguration) 12 | { 13 | NLogLog4TcOutputInitializer.Setup(); 14 | 15 | var config = new NLogLog4TcOutputConfiguration(); 16 | outputConfiguration.Bind(config); 17 | return ActivatorUtilities.CreateInstance(serviceProvider, config); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.NLog/NLogLog4TcOutputInitializer.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Model; 2 | using NLog; 3 | using NLog.Config; 4 | using System; 5 | using System.IO; 6 | 7 | namespace Mbc.Log4Tc.Output.NLog 8 | { 9 | public static class NLogLog4TcOutputInitializer 10 | { 11 | public static bool SetupDone { get; private set; } 12 | 13 | public static void Setup() 14 | { 15 | if (!SetupDone) 16 | { 17 | var path = Path.Combine(OsPaths.GetConfigBasePath(), "NLog.config"); 18 | LogManager.Configuration = new XmlLoggingConfiguration(path); 19 | SetupDone = true; 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.NLog/NLogLog4TcOutputPlugin.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Plugin; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.DependencyInjection; 4 | 5 | namespace Mbc.Log4Tc.Output.NLog 6 | { 7 | public class NLogLog4TcOutputPlugin : IPlugin 8 | { 9 | public void ConfigureServices(IServiceCollection services, IConfiguration configuration) 10 | { 11 | services.AddSingleton(); 12 | 13 | // Example see: https://blog.skrots.com/nlog-implementation-with-azure-application-insights/?feed_id=1833&_unique_id=64f62b11bebcc 14 | // See Application Insights logging adapters: https://github.com/microsoft/ApplicationInsights-dotnet/blob/c420e04562876791f27a61644760d7b7512832d9/LOGGING/README.md#nlog 15 | services.AddApplicationInsightsTelemetryWorkerService(); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.NLog/NLogTarget/readme.md: -------------------------------------------------------------------------------- 1 | # Info NLogTarget 2 | 3 | This is a copy of the Repository [ApplicationInsights-dotnet NLogTarget](https://github.com/microsoft/ApplicationInsights-dotnet/tree/2.22.0/LOGGING/src/NLogTarget) at version 2.22.0. 4 | 5 | The documentation is under: [NLOG - Application Insights logging adapter](https://github.com/microsoft/ApplicationInsights-dotnet/blob/c420e04562876791f27a61644760d7b7512832d9/LOGGING/README.md#nlog). -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Sql/DbValueType.cs: -------------------------------------------------------------------------------- 1 | namespace Mbc.Log4Tc.Output.Sql 2 | { 3 | internal enum DbValueType 4 | { 5 | Null, 6 | Byte, 7 | Word, 8 | DWord, 9 | Real, 10 | LReal, 11 | SInt, 12 | Int, 13 | DInt, 14 | USInt, 15 | UInt, 16 | UDint, 17 | String, 18 | Bool, 19 | ULarge, 20 | Large, 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Sql/Mbc.Log4Tc.Output.Sql.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | all 24 | runtime; build; native; contentfiles; analyzers; buildtransitive 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Sql/SqlLog4TcOutputFactory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Configuration; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using System; 4 | using System.ComponentModel.DataAnnotations; 5 | 6 | namespace Mbc.Log4Tc.Output.Sql 7 | { 8 | public class SqlLog4TcOutputFactory : IOutputFactory 9 | { 10 | public string ShortTypeName => "sql"; 11 | 12 | public OutputHandlerBase Create(IServiceProvider serviceProvider, IConfigurationSection outputConfiguration) 13 | { 14 | var config = new SqlOutputSettings(); 15 | outputConfiguration.Bind(config); 16 | Validator.ValidateObject(config, new ValidationContext(config)); 17 | 18 | return ActivatorUtilities.CreateInstance(serviceProvider, config); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Sql/SqlLog4TcOutputPlugin.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Plugin; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.DependencyInjection; 4 | 5 | namespace Mbc.Log4Tc.Output.Sql 6 | { 7 | public class SqlLog4TcOutputPlugin : IPlugin 8 | { 9 | public void ConfigureServices(IServiceCollection services, IConfiguration configuration) 10 | { 11 | services.AddSingleton(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output.Sql/SqlOutputSettings.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace Mbc.Log4Tc.Output.Sql 4 | { 5 | internal class SqlOutputSettings 6 | { 7 | public enum DbDriver 8 | { 9 | MySql, 10 | Postgres, 11 | SqlServer, 12 | } 13 | 14 | public enum DbScheme 15 | { 16 | SimpleFlat, 17 | FullFlat, 18 | } 19 | 20 | [Required] 21 | public DbDriver Driver { get; set; } 22 | 23 | [Required] 24 | public string ConnectionString { get; set; } 25 | 26 | public DbScheme Scheme { get; set; } = DbScheme.SimpleFlat; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output/IOutputFactory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Configuration; 2 | using System; 3 | 4 | namespace Mbc.Log4Tc.Output 5 | { 6 | /// 7 | /// A interface for factories which creates instances 8 | /// for specific outputs. 9 | /// 10 | public interface IOutputFactory 11 | { 12 | string ShortTypeName { get; } 13 | 14 | /// 15 | /// Creates the instance of this output. 16 | /// The service provider of the DI framework to inject objects for example logging. 17 | /// The output specific configuration section. 18 | /// 19 | OutputHandlerBase Create(IServiceProvider serviceProvider, IConfigurationSection outputConfiguration); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output/Mbc.Log4Tc.Output.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | all 23 | runtime; build; native; contentfiles; analyzers; buildtransitive 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output/OutputExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Configuration; 2 | 3 | namespace Mbc.Log4Tc.Service 4 | { 5 | public static class OutputExtensions 6 | { 7 | public static PluginBuilder AddOutputs(this PluginBuilder pluginBuilder, IConfiguration configuration) 8 | { 9 | // Aktivate all outputs present in the application config 10 | pluginBuilder.ActivateConfiguredOutputs(configuration); 11 | 12 | return pluginBuilder; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Output/OutputHandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Model; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Threading.Tasks; 5 | 6 | namespace Mbc.Log4Tc.Output 7 | { 8 | /// 9 | /// Basisklasse für alle Outputs. Je nach Art der Verarbeitung muss die ableitende Klasse 10 | /// oder 11 | /// überschreiben. 12 | /// 13 | public abstract class OutputHandlerBase 14 | { 15 | public async virtual Task ProcesLogEntriesAsync(IEnumerable logEntries) 16 | { 17 | foreach (var logEntry in logEntries) 18 | { 19 | await ProcesLogEntryAsync(logEntry); 20 | } 21 | } 22 | 23 | protected virtual Task ProcesLogEntryAsync(LogEntry logEntry) 24 | { 25 | throw new NotImplementedException(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Plugin/IPlugin.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Configuration; 2 | using Microsoft.Extensions.DependencyInjection; 3 | 4 | namespace Mbc.Log4Tc.Plugin 5 | { 6 | public interface IPlugin 7 | { 8 | void ConfigureServices(IServiceCollection services, IConfiguration configuration); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Plugin/Log4TcPluginAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Mbc.Log4Tc.Plugin 4 | { 5 | [AttributeUsage(AttributeTargets.Assembly)] 6 | public class Log4TcPluginAttribute : Attribute 7 | { 8 | public Log4TcPluginAttribute() 9 | { 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Plugin/Mbc.Log4Tc.Plugin.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | all 15 | runtime; build; native; contentfiles; analyzers; buildtransitive 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Plugin/PluginBuilder.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Plugin; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.DependencyInjection; 4 | using System.Collections.Generic; 5 | 6 | namespace Mbc.Log4Tc.Service 7 | { 8 | public class PluginBuilder 9 | { 10 | private IServiceCollection _services; 11 | 12 | public PluginBuilder(IServiceCollection services, IEnumerable plugins) 13 | { 14 | _services = services; 15 | Plugins = plugins; 16 | } 17 | 18 | public IEnumerable Plugins { get; set; } 19 | 20 | public void ActivateConfiguredOutputs(IConfiguration configuration) 21 | { 22 | foreach (var plugin in Plugins) 23 | { 24 | plugin.ConfigureServices(_services, configuration); 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Plugin/PluginExtensions.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Output; 2 | using Mbc.Log4Tc.Plugin; 3 | using Microsoft.Extensions.DependencyInjection; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | 8 | namespace Mbc.Log4Tc.Service 9 | { 10 | public static class PluginExtensions 11 | { 12 | public static PluginBuilder AddPlugins(this IServiceCollection services, string pluginFolder) 13 | { 14 | // Check Valid Parameters 15 | if (!Uri.IsWellFormedUriString(pluginFolder, UriKind.RelativeOrAbsolute)) 16 | { 17 | throw new ApplicationException($"The plugin folder {pluginFolder} is not well formed."); 18 | } 19 | 20 | // Load the Plugin Assemblies and Create Plugin instance 21 | IEnumerable plugins = PluginLoader.LoadPlugins(pluginFolder).ToList(); 22 | 23 | return new PluginBuilder(services, plugins); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Receiver/AdsLogReceiverExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.DependencyInjection; 2 | using Microsoft.Extensions.DependencyInjection.Extensions; 3 | 4 | namespace Mbc.Log4Tc.Receiver 5 | { 6 | public static class AdsLogReceiverExtensions 7 | { 8 | /// 9 | /// Register TwinCat 3 as a 10 | /// 11 | public static IServiceCollection AddLog4TcAdsLogReceiver(this IServiceCollection services) 12 | { 13 | services.AddSingleton(); 14 | services.AddSingleton(); 15 | services.TryAddEnumerable(ServiceDescriptor.Singleton(x => x.GetRequiredService())); 16 | services.AddHostedService(); 17 | return services; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Receiver/ILogReceiver.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Mbc.Log4Tc.Receiver 4 | { 5 | public interface ILogReceiver 6 | { 7 | event EventHandler LogsReceived; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Receiver/LogEntryEventArgs.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Model; 2 | using System; 3 | using System.Collections.Generic; 4 | 5 | namespace Mbc.Log4Tc.Receiver 6 | { 7 | public class LogEntryEventArgs : EventArgs 8 | { 9 | public LogEntryEventArgs(List logEntries) 10 | { 11 | LogEntries = logEntries; 12 | } 13 | 14 | public List LogEntries { get; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Receiver/Mbc.Log4Tc.Receiver.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | net8.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | all 22 | runtime; build; native; contentfiles; analyzers; buildtransitive 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Service/InstallService.ps1: -------------------------------------------------------------------------------- 1 | $serviceName = "Mbc.Log4Tc.Service" 2 | $servicePath = $PSScriptRoot 3 | 4 | <# Permission for user execution -> add -Credential $serviceUser 5 | $serviceUser = "$env:ComputerName\$env:UserName" 6 | $acl = Get-Acl "./" 7 | $aclRuleArgs = $serviceUser, "Read,Write,ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow" 8 | $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($aclRuleArgs) 9 | $acl.SetAccessRule($accessRule) 10 | $acl | Set-Acl "./" 11 | #> 12 | 13 | # Install 14 | New-Service -Name $serviceName -BinaryPathName "$servicePath\$serviceName.exe --service" -Description "mbc Log4Tc service" -DisplayName $serviceName -StartupType Automatic -DependsOn "TcSysSrv" 15 | 16 | # Start 17 | Start-Service -Name $serviceName 18 | Get-Service -Name $serviceName -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Service/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "Mbc.Log4Tc.Service-Development": { 4 | "commandName": "Project", 5 | "commandLineArgs": "--localconfig", 6 | "environmentVariables": { 7 | "DOTNET_ENVIRONMENT": "Development" 8 | } 9 | }, 10 | "Mbc.Log4Tc.Service-Development-appdata-config": { 11 | "commandName": "Project", 12 | "commandLineArgs": "", 13 | "environmentVariables": { 14 | "DOTNET_ENVIRONMENT": "Development" 15 | } 16 | }, 17 | "Mbc.Log4Tc.Service-Productive": { 18 | "commandName": "Project", 19 | "commandLineArgs": "--service", 20 | "environmentVariables": { 21 | "DOTNET_ENVIRONMENT": "Production" 22 | } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Service/UninstallService.ps1: -------------------------------------------------------------------------------- 1 | $serviceName = "Mbc.Log4Tc.Service" 2 | $servicePath = Get-Location 3 | 4 | # Stop 5 | Stop-Service -Name $serviceName 6 | 7 | # Remove 8 | sc.exe delete $serviceName 9 | # version 6: Remove-Service -Name $serviceName -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Service/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Information", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Service/appsettings.Production.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Information", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Service/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "Outputs": [ 10 | { 11 | "Type": "nlog" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Service/appsettingsInflux.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "Outputs": [ 10 | { 11 | "Type": "influxdb", 12 | "Config": { 13 | "Url": "http://localhost:8086", 14 | "Database": "log4tc", 15 | "Format": "syslog" 16 | } 17 | }, 18 | { 19 | "Type": "influxdb", 20 | "Filter": { "Logger": "FB_LogTaskCycleTime" }, 21 | "Config": { 22 | "Url": "http://localhost:8086", 23 | "Database": "cycletime", 24 | "Format": "arguments" 25 | } 26 | }, 27 | { 28 | "Type": "influxdb", 29 | "Filter": { "Logger": "PRG_SimulatedControlPlant.Values" }, 30 | "Config": { 31 | "Url": "http://localhost:8086", 32 | "Database": "controlplant", 33 | "Format": "arguments" 34 | } 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Service/appsettingsSample.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "Outputs": [ 10 | { 11 | "Type": "nlog" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Service/appsettingsSql.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "Outputs": [ 10 | { 11 | "Type": "sql", 12 | "Config": { 13 | "ConnectionString": "Server=mbc-srv02;Port=13306;Database=log4tc;Uid=root;Pwd=root;" 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Fragments/Common/Log4TcCommonStartmenu.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Fragments/Log4TcServiceFeature/Log4TcServiceOutputFiles.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Fragments/Log4TcTwinCatLibFeature/Log4TcTwinCatLib.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Fragments/Log4TcTwinCatLibFeature/Log4TcTwinCatLibGettingStarted.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Fragments/Log4TcTwinCatLibFeature/mbc_engineering_log4tc.tmc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | mbc engineering 5 | 6 | 7 | 8 | {9BDDB874-8F39-4D26-90BB-4237ED0644FB} 9 | {DE17856A-0074-30CC-E016-6EAA651C27C7} 10 | 27a353f2-6232-4ebd-aa04-4c45bab0d528 11 | TC3 Log4TC OEM 12 | Log-Library for TC3 by mbc-engineering 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Includes/DefinitionsPlatform.wxi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Package.en-us.wxl: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/favicon.ico -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/favicon.png -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/log4TcBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/log4TcBackground.png -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/mbcBackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/mbcBackground.png -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/mbcBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/Log4Tc/Mbc.Log4Tc.Setup.Wix/Resources/mbcBanner.png -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.SmokeTest/SmokeTest.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using System; 3 | using System.Threading; 4 | using TwinCAT.Ads; 5 | using Xunit; 6 | 7 | namespace Mbc.Log4Tc.SmokeTest 8 | { 9 | public class SmokeTest : IDisposable 10 | { 11 | private readonly PlcControl _plcControl; 12 | private readonly Log4TcService _log4TcService; 13 | 14 | public SmokeTest() 15 | { 16 | _plcControl = new PlcControl(AmsAddress.Parse("172.16.23.20.1.1:853")); 17 | _log4TcService = new Log4TcService(); 18 | _log4TcService.Start(); 19 | } 20 | 21 | public void Dispose() 22 | { 23 | _log4TcService.Stop(); 24 | _plcControl.Dispose(); 25 | } 26 | 27 | [Fact(Skip = "not yet finished")] 28 | public void Test1() 29 | { 30 | _plcControl.Stop(); 31 | _plcControl.Reset(); 32 | _plcControl.Start(); 33 | 34 | Thread.Sleep(2000); 35 | 36 | var logs = _log4TcService.LoggedEntries; 37 | 38 | logs.Should().HaveCount(1); 39 | logs[0].Message.Should().Be("F_Log"); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.SmokeTest/TestRecordingOutput.cs: -------------------------------------------------------------------------------- 1 | using Mbc.Log4Tc.Model; 2 | using Mbc.Log4Tc.Output; 3 | using System.Collections.Generic; 4 | using System.Threading.Tasks; 5 | 6 | namespace Mbc.Log4Tc.SmokeTest 7 | { 8 | public class TestRecordingOutput : OutputHandlerBase 9 | { 10 | private readonly List loggedEntries = new List(); 11 | 12 | public string Name => "TestOutput"; 13 | 14 | public List LoggedEntries => loggedEntries; 15 | 16 | protected override Task ProcesLogEntryAsync(LogEntry logEntry) 17 | { 18 | loggedEntries.Add(logEntry); 19 | return Task.CompletedTask; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Utils/DataAnnotations/TypeClassValidationAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace Mbc.Log4Tc.Service.DataAnnotations 5 | { 6 | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] 7 | public sealed class TypeClassValidationAttribute : ValidationAttribute 8 | { 9 | public override bool IsValid(object value) 10 | { 11 | if (value == null) 12 | return false; 13 | 14 | string clazz = value.ToString(); 15 | var type = Type.GetType(clazz, false); 16 | 17 | return type != null; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /source/Log4Tc/Mbc.Log4Tc.Utils/Mbc.Log4Tc.Utils.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | all 10 | runtime; build; native; contentfiles; analyzers; buildtransitive 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /source/Log4Tc/stylecop.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", 3 | "settings": { 4 | "orderingRules": { 5 | "usingDirectivesPlacement": "outsideNamespace", 6 | "systemUsingDirectivesFirst": false 7 | }, 8 | "documentationRules": { 9 | "documentationCulture": "en-US", 10 | "documentInterfaces": false, 11 | "documentExposedElements": false 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /source/TwinCat_Examples/.gitignore: -------------------------------------------------------------------------------- 1 | **/*.tpy 2 | **/_Libraries/ 3 | *.suo 4 | LineIDs.dbg 5 | *.tmc 6 | _CompileInfo/ 7 | _Boot/ 8 | TrialLicense.tclrs 9 | *.~u 10 | 11 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/.gitignore: -------------------------------------------------------------------------------- 1 | LineIDs.dbg 2 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/A_SimpleLogMessage/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/A_SimpleLogMessage/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {342096fa-e654-4525-ac8e-5f39ae6ece42} 11 | {4bc24810-b0af-499b-96cb-37b8c2952a59} 12 | {5f6606ee-d6fc-4779-8c76-e015a2528eb5} 13 | {548ecf34-1875-4421-b4d4-bc133b255a03} 14 | {45665651-45da-49cf-8e87-ad4c389b4214} 15 | 16 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/B_LogMessageWithArg/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/B_LogMessageWithArg/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {342096fa-e654-4525-ac8e-5f39ae6ece42} 11 | {4bc24810-b0af-499b-96cb-37b8c2952a59} 12 | {5f6606ee-d6fc-4779-8c76-e015a2528eb5} 13 | {548ecf34-1875-4421-b4d4-bc133b255a03} 14 | {45665651-45da-49cf-8e87-ad4c389b4214} 15 | 16 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/C_LogWithLogger/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/C_LogWithLogger/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {342096fa-e654-4525-ac8e-5f39ae6ece42} 11 | {4bc24810-b0af-499b-96cb-37b8c2952a59} 12 | {5f6606ee-d6fc-4779-8c76-e015a2528eb5} 13 | {548ecf34-1875-4421-b4d4-bc133b255a03} 14 | {45665651-45da-49cf-8e87-ad4c389b4214} 15 | 16 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/D_LogWithContext/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/D_LogWithContext/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {342096fa-e654-4525-ac8e-5f39ae6ece42} 11 | {4bc24810-b0af-499b-96cb-37b8c2952a59} 12 | {5f6606ee-d6fc-4779-8c76-e015a2528eb5} 13 | {548ecf34-1875-4421-b4d4-bc133b255a03} 14 | {45665651-45da-49cf-8e87-ad4c389b4214} 15 | 16 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/E_StructuredLogging/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | fPrevTemp THEN 33 | fPrevTemp := fTemp; 34 | 35 | F_LogLA1C( 36 | E_LogLevel.eInfo, 37 | sLogger, 38 | 'Temperatur {temperature}', 39 | fTemp, 40 | F_LogContext().AddBool('csv', TRUE) 41 | ); 42 | END_IF 43 | 44 | PRG_TaskLog.Call();]]> 45 | 46 | 47 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/E_StructuredLogging/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {a814d218-39f3-421e-a9ab-70fc7383ba8b} 11 | {179d9b3c-65f5-4001-b071-383c1d10eccf} 12 | {5e7fee4d-22ce-4d10-8540-1e7986ef6f8d} 13 | {acac62c1-ff5e-4f97-91fb-7b05f351e5c8} 14 | {ba4e49b9-a15b-4320-b757-31aaa95fc90f} 15 | 16 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/GettingStarted.tsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | PlcTask 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/_Config/PLC/A_SimpleLogMessage.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | A_SimpleLogMessage Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/_Config/PLC/B_LogMessageWithArg.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | B_LogMessageWithArg Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/_Config/PLC/C_LogWithLogger.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | C_LogWithLogger Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/_Config/PLC/D_LogWithContext.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | D_LogWithContext Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/_Config/PLC/E_StructuredLogging.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | E_StructuredLogging Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/GettingStarted/_Config/PLC/LoggingExample.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LoggingExample Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/README.md: -------------------------------------------------------------------------------- 1 | # log4TC 2 | Examples for using the log4TC Library in a TwinCat 3.1 Environment 3 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/Plc/Plc.tsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | PlcTask 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/Plc/Plc1/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/Plc/Plc1/PRG_SimulateLoad.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | fRandom); 14 | 15 | FOR nIdx := 0 TO LREAL_TO_UDINT(fRandom * 10000) + 10000 DO 16 | fResult := SIN(UDINT_TO_REAL(nIdx)); 17 | END_FOR]]> 18 | 19 | 20 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/Plc/Plc1/PRG_SimulateLogs.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 0.95 THEN 14 | IF fbRand.Num > 0.99 THEN 15 | nError := LREAL_TO_INT((1 - fbRand.Num) * 10000); 16 | F_LogLA1(E_LogLevel.eWarn, 'PRG_SimulatedLogs', 'Something bad happens. ErrorCode={code}', nError); 17 | ELSE 18 | F_LogL(E_LogLevel.eInfo, 'PRG_SimulatedLogs', 'Execution succeeded.'); 19 | END_IF 20 | END_IF]]> 21 | 22 | 23 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/Plc/Plc1/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {db42d9ad-7178-443c-8288-6b8efdfb6ff0} 11 | {563ae66c-724a-4ec1-9fa9-b3ba2c3fa401} 12 | {208e69fb-2c0a-4939-b699-39f352e49844} 13 | {0b90ae05-4b44-44fa-ac09-3eaab1aa69ff} 14 | {c6e0da97-7d1a-49fc-88e9-6b02cd263901} 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/Plc/_Config/PLC/Plc1.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Plc1 Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "Outputs": [ 10 | { 11 | "Type": "graylog", 12 | "Config": { 13 | "GraylogHostname": "localhost" 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/assets/graylog_add_to_query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Examples/graylog/assets/graylog_add_to_query.png -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/assets/graylog_message_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Examples/graylog/assets/graylog_message_detail.png -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/assets/graylog_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Examples/graylog/assets/graylog_search.png -------------------------------------------------------------------------------- /source/TwinCat_Examples/graylog/assets/input_settings_graylog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Examples/graylog/assets/input_settings_graylog.png -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_on_beckhoff-rt-linux/.gitignore: -------------------------------------------------------------------------------- 1 | data 2 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_on_beckhoff-rt-linux/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "Outputs": [ 10 | { 11 | "Type": "influxdb", 12 | "Config": { 13 | "Url": "http://localhost:8086", 14 | "Database": "log4tc", 15 | "Format": "syslog" 16 | } 17 | }, 18 | { 19 | "Type": "influxdb", 20 | "Filter": { "Logger": "FB_LogTaskCycleTime" }, 21 | "Config": { 22 | "Url": "http://localhost:8086", 23 | "Database": "cycletime", 24 | "Format": "arguments" 25 | } 26 | }, 27 | { 28 | "Type": "influxdb", 29 | "Filter": { "Logger": "PRG_SimulatedControlPlant.Values" }, 30 | "Config": { 31 | "Url": "http://localhost:8086", 32 | "Database": "controlplant", 33 | "Format": "arguments" 34 | } 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_on_beckhoff-rt-linux/initdb.iql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE "log4tc"; 2 | CREATE DATABASE "cycletime"; 3 | CREATE DATABASE "controlplant"; -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/Plc/Plc.tsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | PlcTask 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/Plc/Plc1/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/Plc/Plc1/PRG_SimulateLoad.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | fRandom); 14 | 15 | FOR nIdx := 0 TO LREAL_TO_UDINT(fRandom * 10000) + 10000 DO 16 | fResult := SIN(UDINT_TO_REAL(nIdx)); 17 | END_FOR]]> 18 | 19 | 20 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/Plc/Plc1/PRG_SimulateLogs.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 0.95 THEN 14 | IF fbRand.Num > 0.99 THEN 15 | nError := LREAL_TO_INT((1 - fbRand.Num) * 10000); 16 | F_LogLA1(E_LogLevel.eWarn, 'PRG_SimulatedLogs', 'Something bad happens. ErrorCode={code}', nError); 17 | ELSE 18 | F_LogL(E_LogLevel.eInfo, 'PRG_SimulatedLogs', 'Execution succeeded.'); 19 | END_IF 20 | END_IF]]> 21 | 22 | 23 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/Plc/Plc1/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {db42d9ad-7178-443c-8288-6b8efdfb6ff0} 11 | {563ae66c-724a-4ec1-9fa9-b3ba2c3fa401} 12 | {208e69fb-2c0a-4939-b699-39f352e49844} 13 | {0b90ae05-4b44-44fa-ac09-3eaab1aa69ff} 14 | {c6e0da97-7d1a-49fc-88e9-6b02cd263901} 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/Plc/Plc1/Utils/FB_PT1.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/Plc/Plc1/Utils/FB_Plant.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 16 | 17 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/Plc/_Config/PLC/Plc1.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Plc1 Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "Outputs": [ 10 | { 11 | "Type": "influxdb", 12 | "Config": { 13 | "Url": "http://localhost:8086", 14 | "Database": "log4tc", 15 | "Format": "syslog" 16 | } 17 | }, 18 | { 19 | "Type": "influxdb", 20 | "Filter": { "Logger": "FB_LogTaskCycleTime" }, 21 | "Config": { 22 | "Url": "http://localhost:8086", 23 | "Database": "cycletime", 24 | "Format": "arguments" 25 | } 26 | }, 27 | { 28 | "Type": "influxdb", 29 | "Filter": { "Logger": "PRG_SimulatedControlPlant.Values" }, 30 | "Config": { 31 | "Url": "http://localhost:8086", 32 | "Database": "controlplant", 33 | "Format": "arguments" 34 | } 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/assets/chronograf_charts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Examples/influx_with_message/assets/chronograf_charts.png -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/assets/chronograf_log_viewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Examples/influx_with_message/assets/chronograf_log_viewer.png -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | influxdb: 5 | image: influxdb:1.8-alpine 6 | volumes: 7 | - influxdb:/var/lib/influxdb 8 | - ./initdb.iql:/docker-entrypoint-initdb.d/initdb.iql 9 | ports: 10 | - 8086:8086 11 | chronograf: 12 | image: chronograf:1.8-alpine 13 | environment: 14 | INFLUXDB_URL: http://influxdb:8086 15 | ports: 16 | - 8888:8888 17 | links: 18 | - influxdb 19 | volumes: 20 | - chronograf:/var/lib/chronograf 21 | 22 | volumes: 23 | influxdb: 24 | chronograf: 25 | -------------------------------------------------------------------------------- /source/TwinCat_Examples/influx_with_message/initdb.iql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE "log4tc"; 2 | CREATE DATABASE "cycletime"; 3 | CREATE DATABASE "controlplant"; -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/.gitignore: -------------------------------------------------------------------------------- 1 | # TwinCAT 3 projects 2 | LineIDs.dbg 3 | **/_Libraries 4 | *.tmc 5 | *.compileinfo 6 | *.tizip 7 | *.project.~u 8 | *.tpy 9 | **/_Boot 10 | /TwinCat/Samples/Mbc.Tc3.Pcs.Samples/*.tclrs 11 | *.~u 12 | *.dbg.bak 13 | *.tsproj.bak 14 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/_Config/PLC/log4Tc_SmokeTest.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | log4Tc_SmokeTest Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 0 10 | PlcTask 11 | 12 | #x02010040 13 | 14 | 21 15 | 10000000 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/_Config/PLC/log4Tc_SmokeTest.xti.bak: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | log4Tc_SmokeTest Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 0 10 | PlcTask 11 | 12 | #x02010040 13 | 14 | 21 15 | 10000000 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/_Config/PLC/log4Tc_Tester.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | log4Tc_Tester Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 0 10 | PlcTask 11 | 12 | #x02010030 13 | 14 | 20 15 | 1000000 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/_Config/PLC/log4Tc_Tester.xti.bak: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | log4Tc_Tester Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 0 10 | PlcTask 11 | 12 | #x02010030 13 | 14 | 20 15 | 1000000 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/_Config/PLC/mbc_Log4TC.xti.bak: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | mbc_Log4TC Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 0 10 | PlcTask 11 | 12 | #x02010030 13 | 14 | 20 15 | 1000000 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/_Config/PLC/mbc_log4tc.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | mbc_Log4TC Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 0 10 | PlcTask 11 | 12 | #x02010030 13 | 14 | 20 15 | 1000000 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_SmokeTest/.gitignore: -------------------------------------------------------------------------------- 1 | LineIDs.dbg 2 | _Libraries 3 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_SmokeTest/POUs/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 8 | 9 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_SmokeTest/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 21 7 | 8 | MAIN 9 | 10 | {211d1b80-370c-495e-8cba-0c0b992bc4df} 11 | {0055acb3-a0d3-4027-8240-2f186e273406} 12 | {2a473c51-6643-404f-bc49-35ac438ee59a} 13 | {207ef9a4-bd98-467e-8810-1c42fd8c513f} 14 | {a4ca66cb-3fa0-4fc7-81b4-0b3858a382f5} 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/.gitignore: -------------------------------------------------------------------------------- 1 | LineIDs.dbg 2 | _Libraries 3 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/GVLs/GVL.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/POUs/CheckBounds.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | upper) THEN 16 | CheckBounds := upper; 17 | F_LogLA3(E_LogLevel.eFatal, 'CheckBounds', 'Check bounds exception: {index} {lower} {upper}', index, lower, upper); 18 | ELSE 19 | CheckBounds := index; 20 | END_IF 21 | {flow} 22 | ]]> 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/POUs/CheckLRangeSigned.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | upper) THEN 15 | CheckLRangeSigned := upper; 16 | F_LogLA3(E_LogLevel.eFatal, 'CheckLRangeSigned', 'Check LINT range signed exception: {value} {lower} {upper}', value, lower, upper); 17 | ELSE 18 | CheckLRangeSigned := value; 19 | END_IF 20 | {flow} 21 | ]]> 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/POUs/CheckLRangeUnsigned.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | upper) THEN 15 | CheckLRangeUnsigned := upper; 16 | F_LogLA3(E_LogLevel.eFatal, 'CheckLRangeUnsigned', 'Check ULINT range unsigned exception: {value} {lower} {upper}', value, lower, upper); 17 | ELSE 18 | CheckLRangeUnsigned := value; 19 | END_IF 20 | {flow} 21 | ]]> 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/POUs/CheckPointer.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/POUs/CheckRangeSigned.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | upper) THEN 15 | CheckRangeSigned := upper; 16 | F_LogLA3(E_LogLevel.eFatal, 'CheckRangeSigned', 'Check DINT range signed exception: {value} {lower} {upper}', value, lower, upper); 17 | ELSE 18 | CheckRangeSigned := value; 19 | END_IF 20 | {flow}]]> 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/POUs/CheckRangeUnsigned.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | upper) THEN 15 | CheckRangeUnsigned := upper; 16 | F_LogLA3(E_LogLevel.eFatal, 'CheckRangeUnsigned', 'Check UDINT range unsigned exception: {value} {lower} {upper}', value, lower, upper); 17 | ELSE 18 | CheckRangeUnsigned := value; 19 | END_IF 20 | {flow}]]> 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/POUs/F_FUN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/POUs/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 19 | 20 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 1000 6 | 20 7 | 8 | MAIN 9 | 10 | {8f885ea9-c60a-4c49-9473-9740fcb7aae8} 11 | {fece5986-d77b-4a6f-9029-3e6aeff18286} 12 | {55c39c09-1b73-49b6-9b14-96f161271fbe} 13 | {92dfa0c1-7e1a-4c63-aa9f-d07b96d69e8c} 14 | {33fcc9bb-3d92-4935-964f-b3cd6c4fb716} 15 | 16 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/beckhoff automation gmbh/tc2_standard/3.3.2.0/tc2_standard.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/beckhoff automation gmbh/tc2_standard/3.3.2.0/tc2_standard.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/beckhoff automation gmbh/tc2_system/3.4.21.0/tc2_system.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/beckhoff automation gmbh/tc2_system/3.4.21.0/tc2_system.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/beckhoff automation gmbh/tc2_utilities/3.3.35.0/tc2_utilities.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/beckhoff automation gmbh/tc2_utilities/3.3.35.0/tc2_utilities.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/beckhoff automation gmbh/tc3_module/3.3.21.0/tc3_module.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/beckhoff automation gmbh/tc3_module/3.3.21.0/tc3_module.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/mbc engineering gmbh/log4tc/0.0.1/mbc_log4tc.library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/mbc engineering gmbh/log4tc/0.0.1/mbc_log4tc.library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/mbc engineering gmbh/log4tc/0.0.2/mbc_log4tc_v.0.0.2.library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/mbc engineering gmbh/log4tc/0.0.2/mbc_log4tc_v.0.0.2.library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/base interfaces/3.5.2.0/base_itfs.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/base interfaces/3.5.2.0/base_itfs.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/cmperrors2 interfaces/3.5.12.0/cmperrors2_itfs.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/cmperrors2 interfaces/3.5.12.0/cmperrors2_itfs.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/sysdir/3.5.12.0/sysdir.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/sysdir/3.5.12.0/sysdir.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/sysdir/3.5.8.0/sysdir.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/sysdir/3.5.8.0/sysdir.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/sysfile/3.5.9.0/sysfile.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/sysfile/3.5.9.0/sysfile.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/systypes2 interfaces/3.5.4.0/systypes_itfs.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/system/systypes2 interfaces/3.5.4.0/systypes_itfs.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/www.tcunit.org/tcunit/1.1.0.0/tcunit.library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/log4Tc_Tester/_Libraries/www.tcunit.org/tcunit/1.1.0.0/tcunit.library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/log4tc.tsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {382990C3-AE78-4CDF-8201-CD9F44FB3CAA} 8 | 9 | 10 | 11 | 12 | PlcTask 13 | 14 | 15 | PlcTask1 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/.gitignore: -------------------------------------------------------------------------------- 1 | LineIDs.dbg 2 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Context/F_LogContext.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA1.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA10.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 21 | 22 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA2.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA3.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA4.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA5.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 16 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA6.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA7.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA8.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 19 | 20 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogA9.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 20 | 21 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA1.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA10.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 22 | 23 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA10C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 23 | 24 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA1C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 16 | 17 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA2.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 16 | 17 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA2C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA3.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA3C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA4.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA4C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 19 | 20 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA5.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 19 | 20 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA5C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 20 | 21 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA6.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 20 | 21 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA6C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 21 | 22 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA7.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 21 | 22 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA7C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 22 | 23 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA8.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 22 | 23 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA8C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 23 | 24 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA9.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 23 | 24 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/Any/F_LogLA9C.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 24 | 25 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/F_Log.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 25 | 26 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/F_LogBuilder.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/F_LogL.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 30 | 31 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL1.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL10.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 23 | 24 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL2.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL3.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 16 | 17 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL4.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL5.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL6.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 19 | 20 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL7.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 20 | 21 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL8.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 21 | 22 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/API/Simple/TArg/F_LogL9.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 22 | 23 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/DUTs/E_CustomTypes.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/DUTs/E_Scope.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/DUTs/ST_Log4TcTaskInfo.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/DUTs/ST_ScopedContextStack.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/GVLs/Config.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/GVLs/Const.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/GVLs/Log4TcInfo.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/ITFs/I_LogEntryAdder.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 7 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/POUs/PRG_ScopedContextStack.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/POUs/Utils/F_DINT_TO_UINT_MAX.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | nMaxValue THEN 14 | F_DINT_TO_UINT_MAX := nMaxValue; 15 | ELSE 16 | F_DINT_TO_UINT_MAX := DINT_TO_UINT(nValue); 17 | END_IF 18 | ]]> 19 | 20 | 21 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/POUs/Utils/IncUDINT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/Test/PRG_Test.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 19 | 20 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/Test/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 1000 6 | 20 7 | 8 | PRG_Test 9 | 10 | {f73ea55d-57f9-4818-8e95-fc524fbddad0} 11 | {3d0005ec-ccf5-4565-a28c-044fdf045341} 12 | {8b18efff-5170-4ae9-b26f-4ce33247f86d} 13 | {90889698-95f6-41fa-845b-432d89ee7a8f} 14 | {a72e40e7-00a5-41f7-b4fb-73cfb422a683} 15 | 16 | -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/beckhoff automation gmbh/tc2_standard/3.3.2.0/tc2_standard.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/beckhoff automation gmbh/tc2_standard/3.3.2.0/tc2_standard.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/beckhoff automation gmbh/tc2_system/3.4.21.0/tc2_system.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/beckhoff automation gmbh/tc2_system/3.4.21.0/tc2_system.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/beckhoff automation gmbh/tc2_utilities/3.3.35.0/tc2_utilities.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/beckhoff automation gmbh/tc2_utilities/3.3.35.0/tc2_utilities.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/beckhoff automation gmbh/tc3_module/3.3.21.0/tc3_module.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/beckhoff automation gmbh/tc3_module/3.3.21.0/tc3_module.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/base interfaces/3.5.2.0/base_itfs.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/base interfaces/3.5.2.0/base_itfs.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/cmperrors2 interfaces/3.5.12.0/cmperrors2_itfs.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/cmperrors2 interfaces/3.5.12.0/cmperrors2_itfs.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/sysdir/3.5.12.0/sysdir.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/sysdir/3.5.12.0/sysdir.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/sysfile/3.5.9.0/sysfile.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/sysfile/3.5.9.0/sysfile.compiled-library -------------------------------------------------------------------------------- /source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/systypes2 interfaces/3.5.4.0/systypes_itfs.compiled-library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mbc-engineering/log4TC/d40168f83b422207b6ba510668f95e1a98890e11/source/TwinCat_Lib/log4tc/log4tc/mbc_Log4TC/_Libraries/system/systypes2 interfaces/3.5.4.0/systypes_itfs.compiled-library -------------------------------------------------------------------------------- /source/WinCEKey.py: -------------------------------------------------------------------------------- 1 | import hashlib 2 | import uuid 3 | import base64 4 | 5 | #system_id = '5C78FAE1-9512-4E8F-F704-5A4DFF9D86BD' 6 | system_id = input("System-ID:") 7 | license_id = '9BDDB874-8F39-4D26-90BB-4237ED0644FB' 8 | 9 | sys_id = uuid.UUID(system_id).bytes_le 10 | lic_id = uuid.UUID(license_id).bytes_le 11 | 12 | h = hashlib.sha256() 13 | h.update(sys_id) 14 | h.update(lic_id) 15 | hash = h.digest() 16 | 17 | print(base64.b64encode(hash[0:30])) 18 | 19 | --------------------------------------------------------------------------------