├── Log4rpg ├── .ibmi │ ├── .properties │ ├── QLOG4RPG │ │ ├── .properties │ │ ├── A_INSTALL.CLLE.properties │ │ ├── A_README.TXT.properties │ │ ├── BIND.CLLE.properties │ │ ├── CEELIB.RPGLE.properties │ │ ├── CLIB.RPGLE.properties │ │ ├── CLIB2.RPGLE.properties │ │ ├── COMPILE.CLLE.properties │ │ ├── COPYRIGHT.RPGLE.properties │ │ ├── H_SPEC.RPGLE.properties │ │ ├── LOG4HTMLAY.RPGLE.properties │ │ ├── LOG4PROFLT.RPGLE.properties │ │ ├── LOG4RLFAPP.RPGLE.properties │ │ ├── LOG4RPG.MAKSRV.properties │ │ ├── LOG4RPG00.RPGLE.properties │ │ ├── LOG4RPG01.RPGLE.properties │ │ ├── LOG4RPG02.RPGLE.properties │ │ ├── LOG4RPG03.RPGLE.properties │ │ ├── LOG4RPG04.RPGLE.properties │ │ ├── LOG4RPG07.RPGLE.properties │ │ ├── LOG4RPG08.RPGLE.properties │ │ ├── LOG4RPG09.RPGLE.properties │ │ ├── LOG4RPG10.RPGLE.properties │ │ ├── LOG4RPG11.RPGLE.properties │ │ ├── LOG4RPG12.RPGLE.properties │ │ ├── LOG4RPG13.RPGLE.properties │ │ ├── LOG4RPG14.RPGLE.properties │ │ ├── LOG4RPG15.RPGLE.properties │ │ ├── LOG4RPG16.RPGLE.properties │ │ ├── LOG4RPG17.RPGLE.properties │ │ ├── LOG4RPG18.RPGLE.properties │ │ ├── LOG4RPG50.RPGLE.properties │ │ ├── LOG4RPG51.RPGLE.properties │ │ ├── LOG4RPG52.RPGLE.properties │ │ ├── LOG4RPG60.RPGLE.properties │ │ ├── LOG4RPG61.RPGLE.properties │ │ ├── LOG4RPG62.RPGLE.properties │ │ ├── LOG4RPG97.RPGLE.properties │ │ ├── LOG4RPG98.RPGLE.properties │ │ ├── LOG4RPG99.RPGLE.properties │ │ ├── LOG4RPGF.PFTBL.properties │ │ ├── LOG4RPGS.MAKSRV.properties │ │ ├── LOG4SCKAPP.RPGLE.properties │ │ ├── LOG4SHBAPC.RPGLE.properties │ │ ├── LOG4SHBAPP.RPGLE.properties │ │ ├── LOG4SOCK.RPGLE.properties │ │ ├── LOG4_EXP1.RPGLE.properties │ │ ├── LOG4_EXP2.RPGLE.properties │ │ ├── LOG4_EXP3.RPGLE.properties │ │ ├── LOG4_EXP4.RPGLE.properties │ │ ├── LOG4_PROPS.PROPS.properties │ │ ├── LOG4_X1P1.PROPS.properties │ │ ├── LOG4_X1P2.PROPS.properties │ │ ├── LOG4_X1P3.PROPS.properties │ │ ├── LOG4_X1P4.PROPS.properties │ │ ├── LOG4_X1P5.PROPS.properties │ │ ├── LOG4_X1P6.PROPS.properties │ │ ├── LOG4_X1P7.PROPS.properties │ │ ├── LOG4_X1P8.PROPS.properties │ │ ├── OPNLSTAPIS.RPGLE.properties │ │ ├── PAPPENDER.RPGLE.properties │ │ ├── PFILTER.RPGLE.properties │ │ ├── PLAYOUT.RPGLE.properties │ │ ├── PLOG4RPG.RPGLE.properties │ │ ├── PLOG4RPG00.RPGLE.properties │ │ ├── PLOG4RPG01.RPGLE.properties │ │ ├── PLOG4RPG02.RPGLE.properties │ │ ├── PLOG4RPG03.RPGLE.properties │ │ ├── PLOG4RPG04.RPGLE.properties │ │ ├── PLOG4RPG06.RPGLE.properties │ │ ├── PLOG4RPG07.RPGLE.properties │ │ ├── PLOG4RPG08.RPGLE.properties │ │ ├── PLOG4RPG09.RPGLE.properties │ │ ├── PLOG4RPG10.RPGLE.properties │ │ ├── PLOG4RPG11.RPGLE.properties │ │ ├── PLOG4RPG12.RPGLE.properties │ │ ├── PLOG4RPG13.RPGLE.properties │ │ ├── PLOG4RPG14.RPGLE.properties │ │ ├── PLOG4RPG15.RPGLE.properties │ │ ├── PLOG4RPG16.RPGLE.properties │ │ ├── PLOG4RPG17.RPGLE.properties │ │ ├── PLOG4RPG18.RPGLE.properties │ │ ├── PLOG4RPG50.RPGLE.properties │ │ ├── PLOG4RPG51.RPGLE.properties │ │ ├── PLOG4RPG52.RPGLE.properties │ │ ├── PLOG4RPG60.RPGLE.properties │ │ ├── PLOG4RPG61.RPGLE.properties │ │ ├── PLOG4RPG62.RPGLE.properties │ │ ├── PLOG4RPG97.RPGLE.properties │ │ ├── PLOG4RPG98.RPGLE.properties │ │ ├── PLOG4RPG99.RPGLE.properties │ │ ├── PLOG4SOCK.RPGLE.properties │ │ ├── PSHARE.RPGLE.properties │ │ ├── PTYPES.RPGLE.properties │ │ ├── QUSRJOBI.RPGLE.properties │ │ └── SDS.RPGLE.properties │ ├── QXML │ │ ├── .properties │ │ └── LOG4RPG.XML.properties │ └── QXMLGENS │ │ ├── .properties │ │ └── LOG4RPG.CLP.properties ├── .project ├── QLOG4RPG │ ├── A_INSTALL.CLLE │ ├── A_README.TXT │ ├── BIND.CLLE │ ├── CEELIB.RPGLE │ ├── CLIB.RPGLE │ ├── CLIB2.RPGLE │ ├── COMPILE.CLLE │ ├── COPYRIGHT.RPGLE │ ├── H_SPEC.RPGLE │ ├── LOG4HTMLAY.RPGLE │ ├── LOG4PROFLT.RPGLE │ ├── LOG4RLFAPP.RPGLE │ ├── LOG4RPG.MAKSRV │ ├── LOG4RPG00.RPGLE │ ├── LOG4RPG01.RPGLE │ ├── LOG4RPG02.RPGLE │ ├── LOG4RPG03.RPGLE │ ├── LOG4RPG04.RPGLE │ ├── LOG4RPG07.RPGLE │ ├── LOG4RPG08.RPGLE │ ├── LOG4RPG09.RPGLE │ ├── LOG4RPG10.RPGLE │ ├── LOG4RPG11.RPGLE │ ├── LOG4RPG12.RPGLE │ ├── LOG4RPG13.RPGLE │ ├── LOG4RPG14.RPGLE │ ├── LOG4RPG15.RPGLE │ ├── LOG4RPG16.RPGLE │ ├── LOG4RPG17.RPGLE │ ├── LOG4RPG18.RPGLE │ ├── LOG4RPG50.RPGLE │ ├── LOG4RPG51.RPGLE │ ├── LOG4RPG52.RPGLE │ ├── LOG4RPG60.RPGLE │ ├── LOG4RPG61.RPGLE │ ├── LOG4RPG62.RPGLE │ ├── LOG4RPG97.RPGLE │ ├── LOG4RPG98.RPGLE │ ├── LOG4RPG99.RPGLE │ ├── LOG4RPGS.MAKSRV │ ├── LOG4SCKAPP.RPGLE │ ├── LOG4SHBAPC.RPGLE │ ├── LOG4SHBAPP.RPGLE │ ├── LOG4SOCK.RPGLE │ ├── LOG4_EXP1.RPGLE │ ├── LOG4_EXP2.RPGLE │ ├── LOG4_EXP3.RPGLE │ ├── LOG4_EXP4.RPGLE │ ├── LOG4_PROPS.PROPS │ ├── LOG4_X1P1.PROPS │ ├── LOG4_X1P2.PROPS │ ├── LOG4_X1P3.PROPS │ ├── LOG4_X1P4.PROPS │ ├── LOG4_X1P5.PROPS │ ├── LOG4_X1P6.PROPS │ ├── LOG4_X1P7.PROPS │ ├── LOG4_X1P8.PROPS │ ├── OPNLSTAPIS.RPGLE │ ├── PAPPENDER.RPGLE │ ├── PFILTER.RPGLE │ ├── PLAYOUT.RPGLE │ ├── PLOG4RPG.RPGLE │ ├── PLOG4RPG00.RPGLE │ ├── PLOG4RPG01.RPGLE │ ├── PLOG4RPG02.RPGLE │ ├── PLOG4RPG03.RPGLE │ ├── PLOG4RPG04.RPGLE │ ├── PLOG4RPG06.RPGLE │ ├── PLOG4RPG07.RPGLE │ ├── PLOG4RPG08.RPGLE │ ├── PLOG4RPG09.RPGLE │ ├── PLOG4RPG10.RPGLE │ ├── PLOG4RPG11.RPGLE │ ├── PLOG4RPG12.RPGLE │ ├── PLOG4RPG13.RPGLE │ ├── PLOG4RPG14.RPGLE │ ├── PLOG4RPG15.RPGLE │ ├── PLOG4RPG16.RPGLE │ ├── PLOG4RPG17.RPGLE │ ├── PLOG4RPG18.RPGLE │ ├── PLOG4RPG50.RPGLE │ ├── PLOG4RPG51.RPGLE │ ├── PLOG4RPG52.RPGLE │ ├── PLOG4RPG60.RPGLE │ ├── PLOG4RPG61.RPGLE │ ├── PLOG4RPG62.RPGLE │ ├── PLOG4RPG97.RPGLE │ ├── PLOG4RPG98.RPGLE │ ├── PLOG4RPG99.RPGLE │ ├── PLOG4SOCK.RPGLE │ ├── PSHARE.RPGLE │ ├── PTYPES.RPGLE │ ├── QUSRJOBI.RPGLE │ └── SDS.RPGLE ├── QXML │ └── LOG4RPG.XML └── QXMLGENS │ └── LOG4RPG.CLP ├── README.md └── documentation ├── Internal_Log.md ├── Log4rpg.md ├── Log_Level.md ├── Logger_Hierarchy.md ├── Overview.md ├── Quickstart.md ├── What_s_new.md ├── appender ├── Appender.md ├── Appender___DailyRollingFileAppender.md ├── Appender___DailyRollingPrintAppender.md ├── Appender___NullAppender.md ├── Appender___RollingFileAppender.md ├── Appender___XMLSocketAppender.md ├── Appender___XMLSocketHubAppender.md └── reference │ ├── Appender_new___Create_appender.md │ ├── Appender_setFilter___Set_filter_for_appender.md │ └── Appender_setLayout___Set_layout_for_appender.md ├── chainsaw ├── Chainsaw___Installation.md ├── Chainsaw___Overview.md ├── Chainsaw___Settings_files.md └── assets │ ├── XMLSocketHubReceiver.jar │ ├── chainsaw-xml-receiver.png │ ├── detail-panel-custom-layout-left-aligned.html │ ├── detail-panel-custom-layout-right-aligned.html │ ├── detail-panel-left-aligned.png │ ├── detail-panel-original-layout.html │ ├── detail-panel-original-layout.png │ └── detail-panel-right-aligned.png ├── configuration ├── Configuration___DailyRollingFileAppender.md ├── Configuration___DailyRollingPrintAppender.md ├── Configuration___HTML_Output.md ├── Configuration___RollingFileAppender.md ├── Configuration___XML_Output_to_Chainsaw.md ├── Configuration___XML_Output_to_Chainsaw_Hub.md ├── Configuration_of_a_logger_within_a_program.md └── assets │ ├── XMLSocketHubReceiver-Config.xml │ ├── XMLSocketReceiver-Config.xml │ ├── chainsaw-socket-hub-receiver.png │ ├── chainsaw-socket-receiver.png │ ├── chainsaw-specify-configuration-file-xml-socket-hub-receiver.png │ └── chainsaw-specify-configuration-file-xml-socket-receiver.png ├── filter ├── Filter.md ├── Filter___PropertyFilter.md └── reference │ ├── Filter_new___Create_filter.md │ └── Filter_setNext___Set_follow_up_filter.md ├── layout ├── Layout.md ├── Layout___HTMLLayout.md ├── Layout___PatternLayout.md ├── Layout___SimpleLayout.md ├── Layout___XMLLayout.md ├── assets │ ├── output-html-layout.png │ ├── output-pattern-layout.png │ ├── output-simple-layout.png │ └── output-xml-layout_with_default_settings.png ├── popup_xmlEncoding_t.md └── reference │ └── Layout_new___Create_layout.md └── reference ├── Configurator_clearConfiguration_.md ├── Configurator_loadAndWatchPropert.md ├── Configurator_loadDefaultConfiguration.md ├── Configurator_loadPropertiesConfiguration.md ├── Logger_addAppender___Add_appender.md ├── Logger_debugMsg___Log_DEBUG_message.md ├── Logger_debug___Log_DEBUG_statement.md ├── Logger_errorMsg___Log_ERROR_message.md ├── Logger_error___Log_ERROR_statement.md ├── Logger_fatalMsg___Log_FATAL_message.md ├── Logger_fatal___Log_FATAL_statement.md ├── Logger_forcedLogMsg___Log_message.md ├── Logger_forcedLog___Log_statement.md ├── Logger_getInternalDebugMode___Returns_the_mode_of_the_internal_debug_log.md ├── Logger_getInternalDebugOutput___Returns_the_output_target_of_the_internal_debug_log.md ├── Logger_getLogger___Get_logger_handle.md ├── Logger_getName___Get_logger_Name.md ├── Logger_getRootLogger___Get_root_logger.md ├── Logger_infoMsg___Log_INFO_message.md ├── Logger_info___Log_INFO_statementent.md ├── Logger_isDebugEnabled___Checks__whether_log_level_DEBUG_is_enabled.md ├── Logger_isErrorEnabled___Checks__whether_log_level_ERROR_is_enabled.md.md ├── Logger_isFatalEnabled___Checks__whether_log_level_FATAL_is_enabled.md.md ├── Logger_isInfoEnabled___Checks__whether_log_level_INFO_is_enabled.md.md ├── Logger_isLogging___Returns_operating_mode_of_Log4rpg.md ├── Logger_isNull___Check_logger_han.md ├── Logger_isWarnEnabled___Checks__whether_log_level_WARN_is_enabled.md.md ├── Logger_null___Produce_NULL_Handl.md ├── Logger_removeAllAppenders___Remove_all_appender.md ├── Logger_removeAppender___Remove_appender.md ├── Logger_setInternalDebugging___Enable_Disable_internal_log.md ├── Logger_setLevel___Set_log_Level.md ├── Logger_setLogging___Enables__disables_Log4rpg.md ├── Logger_warnMsg___Log_WARN_message.md ├── Logger_warn___Log_WARN_statement.md └── popup_time_unit.md /Log4rpg/.ibmi/.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:16 CEST 2014 2 | com.ibm.etools.iseries.remotebuild\:ActiveBuildStyle=com.ibm.etools.iseries.remotebuild.style.program 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/.properties: -------------------------------------------------------------------------------- 1 | #Fri Apr 13 15:15:16 CEST 2018 2 | com.ibm.etools.iseries.projects.core\:ccsid=273 3 | com.ibm.etools.iseries.projects.core\:textDescription=RPG Logging Services 4 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/A_INSTALL.CLLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Apr 13 15:18:58 CEST 2018 2 | com.ibm.etools.iseries.projects.core\:textDescription=Log4rpg - Installer 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/A_README.TXT.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:45 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=History LOG4RPG Service Program 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/BIND.CLLE.properties: -------------------------------------------------------------------------------- 1 | #Tue Jul 08 13:15:17 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Log4rpg Make File 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/CEELIB.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:45 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Prototypes of CEE APIs (include) 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/CLIB.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:46 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Prototypes of C-Library (include) 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/CLIB2.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:46 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Prototypes of C-Library Record IO (include) 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/COMPILE.CLLE.properties: -------------------------------------------------------------------------------- 1 | #Tue Jul 08 13:15:11 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Log4rpg Make File 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/COPYRIGHT.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:46 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Copyright information 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/H_SPEC.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:48 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=H-Specification 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4HTMLAY.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:51 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: HTMLLayout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4PROFLT.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:51 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: PropertyFilter 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RLFAPP.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:51 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: RollingFileAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG.MAKSRV.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:52 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Export List 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG00.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:53 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Stub 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG01.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:54 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Logger 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG02.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:54 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: LoggerList 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG03.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:54 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Appender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG04.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:54 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: AppenderList 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG07.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:55 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: PropertyList 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG08.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:55 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Configurator 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG09.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:55 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Level 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG10.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:56 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: LogLog 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG11.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:56 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Layout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG12.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:56 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: ClassLoader 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG13.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:56 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Repository 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG14.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:57 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: DebugMode 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG15.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:57 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: DebugOutput 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG16.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:57 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: LogEvent 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG17.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:57 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Filter 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG18.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:58 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: FilterList 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG50.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:58 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: DailyRollingFileAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG51.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:58 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: DailyRollingPrintAppende 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG52.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:59 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: NullAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG60.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:59 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: PatternLayout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG61.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:59 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: SimpleLayout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG62.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:59 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: XMLLayout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG97.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:00 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Synchronisation 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG98.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:00 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Option Converter 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPG99.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:01 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Helper 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPGF.PFTBL.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:53 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Log4rpg - Member Appender Output File (Template) 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4RPGS.MAKSRV.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:53 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Export List - Stub Service Pgm 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4SCKAPP.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:01 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: XMLSocketAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4SHBAPC.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:01 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: XMLSocketHubAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4SHBAPP.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:01 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: XMLSocketHubAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4SOCK.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:02 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Socket Helper 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_EXP1.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Mar 21 18:22:11 CET 2025 2 | com.ibm.etools.iseries.projects.core\:textDescription=Example 1 - Properties From Stream File 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_EXP2.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Mar 21 18:21:56 CET 2025 2 | com.ibm.etools.iseries.projects.core\:textDescription=Example 2 - Properties From Member 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_EXP3.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Sun Mar 23 13:25:56 CET 2025 2 | com.ibm.etools.iseries.projects.core\:textDescription=Example 3 - Programmatically Log4rpg Configuration 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_EXP4.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Wed Mar 26 15:43:40 CET 2025 2 | com.ibm.etools.iseries.projects.core\:textDescription=Example 4 - Speed Test 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_PROPS.PROPS.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:48 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Configures various Appenders, Layouts and Filters 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_X1P1.PROPS.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:48 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Configures a DailyRollingFileAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_X1P2.PROPS.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:49 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Configures a DailyRollingPrintAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_X1P3.PROPS.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:49 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Configures a DailyRollingFileAppender + HTMLLayout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_X1P4.PROPS.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:49 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Configures a XMLSocketAppender for Chainsaw 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_X1P5.PROPS.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:49 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Configures a DailyRollingFileAppender + XMLLayout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_X1P6.PROPS.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:50 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Configures a XMLSocketHubAppender for Chainsaw 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_X1P7.PROPS.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:25:50 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Configures a RollingFileAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/LOG4_X1P8.PROPS.properties: -------------------------------------------------------------------------------- 1 | #Mon Mar 31 20:19:27 CEST 2025 2 | com.ibm.etools.iseries.projects.core\:textDescription=Configures a DailyRollingFileAppender + SimpleLayo 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/OPNLSTAPIS.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:02 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Process Open List APIs 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PAPPENDER.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:02 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Prototypes Appender public 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PFILTER.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:02 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Prototypes Filter public 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLAYOUT.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:03 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Prototypes Layout public 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:03 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Type Definitions public 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG00.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:03 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Stub 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG01.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:03 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Logger 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG02.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:04 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: LoggerList 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG03.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:04 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Appender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG04.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:04 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: AppenderList 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG06.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:04 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Property 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG07.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:05 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: PropertyList 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG08.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:05 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Configurator 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG09.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:06 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Level 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG10.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:06 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: LogLog 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG11.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:07 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Layout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG12.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:07 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: ClassLoader 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG13.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:07 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Repository 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG14.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:08 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: DebugMode 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG15.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:08 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: DebugOutput 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG16.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:08 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: LogEvent 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG17.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:09 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Filter 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG18.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:09 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: FilterList 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG50.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:09 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: DailyRollingFileAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG51.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:09 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: PrinterAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG52.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:09 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: NullAppender 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG60.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:10 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: PatternLayout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG61.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:10 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: SimpleLayout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG62.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:10 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: XMLLayout 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG97.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:10 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Synchronisation 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG98.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:10 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Option Converter 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4RPG99.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:11 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Helper 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PLOG4SOCK.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:11 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Object\: Socket Helper 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PSHARE.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:11 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Type defs appenders, layouts 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/PTYPES.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:12 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=SrvPgm\: LOG4RPG - Internal Type Definitions 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/QUSRJOBI.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Mar 14 16:33:03 CET 2025 2 | com.ibm.etools.iseries.projects.core\:textDescription=Retrieve Job Information (QUSRJOBI) API 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QLOG4RPG/SDS.RPGLE.properties: -------------------------------------------------------------------------------- 1 | #Fri Jul 04 14:26:12 CEST 2014 2 | com.ibm.etools.iseries.projects.core\:textDescription=Programm Status Datenstruktur 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QXML/.properties: -------------------------------------------------------------------------------- 1 | #Fri Apr 13 15:05:49 CEST 2018 2 | com.ibm.etools.iseries.projects.core\:ccsid=273 3 | com.ibm.etools.iseries.projects.core\:textDescription=XMLGEN Distribution Packages 4 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QXML/LOG4RPG.XML.properties: -------------------------------------------------------------------------------- 1 | #Tue Mar 25 11:15:33 CET 2025 2 | com.ibm.etools.iseries.projects.core\:textDescription=XML Install Package\: LOG4RPG V1.13 3 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QXMLGENS/.properties: -------------------------------------------------------------------------------- 1 | #Fri Apr 13 15:05:50 CEST 2018 2 | com.ibm.etools.iseries.projects.core\:ccsid=273 3 | com.ibm.etools.iseries.projects.core\:textDescription=XMLGEN Package Scripts 4 | -------------------------------------------------------------------------------- /Log4rpg/.ibmi/QXMLGENS/LOG4RPG.CLP.properties: -------------------------------------------------------------------------------- 1 | #Fri Apr 13 15:05:50 CEST 2018 2 | com.ibm.etools.iseries.projects.core\:textDescription=LOG4RPG - XMLGEN package script 3 | -------------------------------------------------------------------------------- /Log4rpg/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tools400 - Log4rpg 4 | 5 | 6 | 7 | 8 | 9 | com.ibm.etools.iseries.perspective.projectBuilder 10 | 11 | 12 | 13 | 14 | com.ibm.etools.iseries.projects.modelValidator 15 | 16 | 17 | 18 | 19 | 20 | com.ibm.etools.iseries.perspective.nature 21 | 22 | 23 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/COPYRIGHT.RPGLE: -------------------------------------------------------------------------------- 1 | /if not defined(COPYRIGHT_DSPEC) 2 | H COPYRIGHT('+ 3 | HLOG4RPG V1.13 - 23.03.2025 - mailto:thomas.raddatz@tools400.de') 4 | /eof 5 | /endif 6 | D cLOG4RPG_VERSION... 7 | D C '1.13' 8 | D cLOG4RPG_DATE... 9 | D C '23.03.2025' 10 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/H_SPEC.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(H_SPEC) 2 | /DEFINE H_SPEC 3 | * 4 | /IF NOT DEFINED(UNIT_TEST) 5 | H NOMAIN 6 | /ENDIF 7 | * Standard H-Specs 8 | H DEBUG 9 | H OPTION(*SRCSTMT : *NODEBUGIO) 10 | H DECEDIT('0,') DATEDIT(*DMY.) 11 | H DATFMT(*ISO ) TIMFMT(*ISO ) 12 | H EXPROPTS(*RESDECPOS) 13 | H EXTBININT(*YES) 14 | H CCSID(*CHAR: *JOBRUN) 15 | H REQPREXP(*REQUIRE) 16 | * 17 | /ENDIF 18 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_EXP1.RPGLE: -------------------------------------------------------------------------------- 1 | **free 2 | //===================================================================== 3 | // Copy the configuration member to the IFS like this: 4 | // CPY OBJ('/QSYS.LIB/LOG4RPGDVP.LIB/QLOG4RPG.FILE/LOG4_X1P1.MBR') 5 | // TOOBJ('/home/raddatz/log4_x1P1.properties') TOCCSID(1252) 6 | // DTAFMT(*TEXT) 7 | // Change the call to Configurator_loadPropertiesConfiguration(), so 8 | // that it specifies the correct location of log4_x1P1.properties. 9 | //===================================================================== 10 | // >>PRE-COMPILER<< 11 | // >>CRTCMD<< CRTRPGMOD MODULE(&LI/&OB) + 12 | // SRCFILE(&SL/&SF) SRCMBR(&SM); 13 | // >>COMPILE<< 14 | // >>PARM<< TRUNCNBR(*NO); 15 | // >>PARM<< DBGVIEW(*LIST); 16 | // >>PARM<< OPTION(*EVENTF); 17 | // >>END-COMPILE<< 18 | // >>EXECUTE<< 19 | // >>CMD<< CRTPGM PGM(&LI/&OB) + 20 | // MODULE(&LI/&OB) + 21 | // ACTGRP(*NEW) + 22 | // BNDSRVPGM(*LIBL/LOG4RPG) + 23 | // DETAIL(*BASIC); 24 | // >>END-PRE-COMPILER<< 25 | //===================================================================== 26 | 27 | ctl-opt main(main); 28 | 29 | /include QLOG4RPG,PLOG4RPG 30 | 31 | dcl-pr main extpgm('LOG4_EXP1'); 32 | gi_config char(64) options(*nopass) const; 33 | end-pr; 34 | 35 | dcl-proc main; 36 | dcl-pi *n; 37 | gi_config char(64) options(*nopass) const; 38 | end-pi; 39 | 40 | dcl-s config like(gi_config); 41 | 42 | dcl-s hLogger like(LOG4RPG_hLogger_t); 43 | 44 | if (%parms() >= %parmnum(gi_config)); 45 | config = %subst(gi_config: 1: %scan(' ': gi_config)); 46 | else; 47 | config = 'mbr:LOG4RPGDVP/QLOG4RPG(LOG4_X1P1)'; 48 | endif; 49 | 50 | // Enable internal debug log for the configuration steps 51 | // before property 'log4rpg.debug' is set to 'off, printer'. 52 | Logger_setInternalDebugging(cLOG4RPG_DEBUG_ON: cLOG4RPG_DEBUG_OUTPUT_PRINTER); 53 | 54 | Configurator_loadPropertiesConfiguration('file:/home/raddatz/log4_x1P1.properties'); 55 | 56 | hLogger = Logger_getLogger('de.tools400'); 57 | 58 | Logger_info(hLogger: 'Hello World'); 59 | Logger_debug(hLogger: 'Not logged, due to level=INFO'); 60 | 61 | end-proc; 62 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_EXP2.RPGLE: -------------------------------------------------------------------------------- 1 | **free 2 | //===================================================================== 3 | // Change the call to Configurator_loadPropertiesConfiguration(), so 4 | // that it specifies the correct location of member LOG4_X1P1. 5 | //===================================================================== 6 | // >>PRE-COMPILER<< 7 | // >>CRTCMD<< CRTRPGMOD MODULE(&LI/&OB) + 8 | // SRCFILE(&SL/&SF) SRCMBR(&SM); 9 | // >>COMPILE<< 10 | // >>PARM<< TRUNCNBR(*NO); 11 | // >>PARM<< DBGVIEW(*LIST); 12 | // >>PARM<< OPTION(*EVENTF); 13 | // >>END-COMPILE<< 14 | // >>EXECUTE<< 15 | // >>CMD<< CRTPGM PGM(&LI/&OB) + 16 | // MODULE(&LI/&OB) + 17 | // ACTGRP(*NEW) + 18 | // BNDSRVPGM(*LIBL/LOG4RPG) + 19 | // DETAIL(*BASIC); 20 | // >>END-PRE-COMPILER<< 21 | //===================================================================== 22 | 23 | ctl-opt main(main); 24 | 25 | /include QLOG4RPG,PLOG4RPG 26 | 27 | dcl-pr main extpgm('LOG4_EXP1'); 28 | gi_config char(64) options(*nopass) const; 29 | end-pr; 30 | 31 | dcl-proc main; 32 | dcl-pi *n; 33 | gi_config char(64) options(*nopass) const; 34 | end-pi; 35 | 36 | dcl-s config like(gi_config); 37 | 38 | dcl-s hRootLogger like(LOG4RPG_hLogger_t); 39 | dcl-s hChildLogger1 like(LOG4RPG_hLogger_t); 40 | dcl-s hSubLogger1 like(LOG4RPG_hLogger_t); 41 | dcl-s hSubLogger2 like(LOG4RPG_hLogger_t); 42 | 43 | if (%parms() >= %parmnum(gi_config)); 44 | config = %subst(gi_config: 1: %scan(' ': gi_config)); 45 | else; 46 | config = 'mbr:LOG4RPGDVP/QLOG4RPG(LOG4_X1P2)'; 47 | endif; 48 | 49 | // Enable internal debug log for the configuration steps 50 | // before property 'log4rpg.debug' is set to 'off, printer'. 51 | Logger_setInternalDebugging(cLOG4RPG_DEBUG_ON: cLOG4RPG_DEBUG_OUTPUT_PRINTER); 52 | 53 | Configurator_loadPropertiesConfiguration(config); 54 | 55 | hRootLogger = Logger_getRootLogger(); 56 | hChildLogger1 = Logger_getLogger('de.tools400'); 57 | hSubLogger1 = Logger_getLogger('de.tools400.sub1'); 58 | hSubLogger2 = Logger_getLogger('de.tools400.sub2'); 59 | 60 | // The root logger is configured with log level DEBUG. 61 | // Therefore it must log messages of the following types: 62 | // DEBUG, INFO, WARN, ERROR and FATAL 63 | Logger_debug(hRootLogger: 'Debug message'); 64 | Logger_debug(hRootLogger: 'Debug message (long). This is a very long + 65 | message that must be printed by the + 66 | DailyRollingPrintAppender using multiple lines.'); 67 | Logger_info(hRootLogger: 'Info message'); 68 | Logger_warn(hRootLogger: 'Warning message'); 69 | Logger_error(hRootLogger: 'Error message'); 70 | Logger_fatal(hRootLogger: 'Fatal error message'); 71 | 72 | // The 'de.tools400' child logger is configured with log level INFO. 73 | // Therefore it only logs messages of the following types: 74 | // INFO, WARN, ERROR, and FATAL 75 | // DEBUG messages are not appended to the log. 76 | Logger_debug(hChildLogger1: 'Debug message, not logged (de.tools400)'); 77 | Logger_info(hChildLogger1: 'Debug message (de.tools400)'); 78 | Logger_warn(hChildLogger1: 'Warning message (de.tools400)'); 79 | Logger_error(hChildLogger1: 'Error message (de.tools400)'); 80 | Logger_fatal(hChildLogger1: 'Fatal error message (de.tools400)'); 81 | 82 | // The 'de.tools400.sub11' logger inherits its properties from 83 | // the de.tools400' logger. Hence DEBUG messages are not logged. 84 | Logger_debug(hSubLogger1: 'Debug message, not logged (de.tools400.sub1)'); 85 | Logger_info(hSubLogger1: 'Info message (de.tools400.sub1)'); 86 | 87 | // The 'de.tools400.sub2' logger inherits its properties from 88 | // the de.tools400' logger, but the log level is overridden programmatically. 89 | Logger_setLevel(hSubLogger2: cLOG4RPG_LEVEL_DEBUG); 90 | Logger_debug(hSubLogger2: 'Debug message, now logged (de.tools400.sub2)'); 91 | Logger_info(hSubLogger2: 'Info message (de.tools400.sub2)'); 92 | 93 | // The log level can be changed at any time. 94 | // The log level of logger 'de.tools400.sub2' could also be set 95 | // in the configuration file like this: 96 | // log4rpg.logger.de.tools400.sub2=DEBUG 97 | 98 | end-proc; 99 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_EXP3.RPGLE: -------------------------------------------------------------------------------- 1 | **free 2 | //===================================================================== 3 | // Change the call to Configurator_loadPropertiesConfiguration(), so 4 | // that it specifies the correct location of member LOG4_X1P1. 5 | //===================================================================== 6 | // >>PRE-COMPILER<< 7 | // >>CRTCMD<< CRTRPGMOD MODULE(&LI/&OB) + 8 | // SRCFILE(&SL/&SF) SRCMBR(&SM); 9 | // >>COMPILE<< 10 | // >>PARM<< TRUNCNBR(*NO); 11 | // >>PARM<< DBGVIEW(*LIST); 12 | // >>PARM<< OPTION(*EVENTF); 13 | // >>END-COMPILE<< 14 | // >>EXECUTE<< 15 | // >>CMD<< CRTPGM PGM(&LI/&OB) + 16 | // MODULE(&LI/&OB) + 17 | // ACTGRP(*NEW) + 18 | // BNDSRVPGM(*LIBL/LOG4RPG) + 19 | // DETAIL(*BASIC); 20 | // >>END-PRE-COMPILER<< 21 | //===================================================================== 22 | 23 | ctl-opt main(main); 24 | 25 | /include QLOG4RPG,PLOG4RPG 26 | 27 | dcl-pr main extpgm('LOG4_EXP1'); 28 | end-pr; 29 | 30 | dcl-proc main; 31 | dcl-pi *n; 32 | end-pi; 33 | 34 | dcl-s hLogger like(LOG4RPG_hLogger_t); 35 | dcl-s hLayout like(LOG4RPG_pLayout_t); 36 | dcl-s hAppender like(LOG4RPG_pAppender_t); 37 | 38 | // Enable internal debug log for the configuration steps 39 | // before property 'log4rpg.debug' is set to 'off, printer'. 40 | Logger_setInternalDebugging(cLOG4RPG_DEBUG_ON: cLOG4RPG_DEBUG_OUTPUT_PRINTER); 41 | 42 | Configurator_clearConfiguration(); 43 | 44 | hLayout = Layout_new('*LIBL/LOG4RPG(PatternLayout)' 45 | : 'conversionPattern=%z [%-5p] %L/%P(%M).%F (%S) %m%n;'); 46 | 47 | hAppender = Appender_new('appender' 48 | : '*LIBL/LOG4RPG(DailyRollingFileAppender)' 49 | : 'path=/home/raddatz/log4_x1p0.log;'); 50 | Appender_setLayout(hAppender: hLayout); 51 | 52 | // Configure the root logger 53 | Logger_addAppender(hLogger: hAppender); 54 | Logger_addAppender(Logger_getRootLogger(): hAppender); 55 | Logger_setLevel(Logger_getRootLogger(): cLOG4RPG_LEVEL_DEBUG); 56 | 57 | // Configure the 'de.tools400' logger 58 | hLogger = Logger_getLogger('de.tools400'); 59 | Logger_setLevel(hLogger: cLOG4RPG_LEVEL_INFO); 60 | 61 | // Send some log meesages to the log file 62 | Logger_info(hLogger: 'Hello World'); 63 | Logger_debug(hLogger: 'Not logged, due to level=INFO'); 64 | 65 | Logger_debug(Logger_getRootLogger() 66 | : 'Append to the log file, + 67 | because the log level of the root logger is set to DEBUG'); 68 | 69 | end-proc; 70 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_X1P1.PROPS: -------------------------------------------------------------------------------- 1 | 2 | log4rpg.debug=off, printer 3 | 4 | log4rpg.rootLogger=DEBUG, file 5 | log4rpg.logger.de.tools400=INFO 6 | 7 | log4rpg.appender.file=*LIBL/LOG4RPG(DailyRollingFileAppender) 8 | log4rpg.appender.file.path=log4_x1p1.log 9 | log4rpg.appender.file.layout=PatternLayout 10 | log4rpg.appender.file.layout.conversionPattern=%z [%-5p] %L/%P(%M).%F (%S) %m%n 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_X1P2.PROPS: -------------------------------------------------------------------------------- 1 | 2 | log4rpg.debug=off, printer 3 | 4 | log4rpg.rootLogger=DEBUG, print 5 | log4rpg.logger.de.tools400=INFO 6 | 7 | log4rpg.appender.print=*LIBL/LOG4RPG(DailyRollingPrintAppender) 8 | log4rpg.appender.print.splfName=LOG4_X1P2 9 | log4rpg.appender.print.length=49 10 | log4rpg.appender.print.width=132 11 | log4rpg.appender.print.lpi=6 12 | log4rpg.appender.print.cpi=10 13 | log4rpg.appender.print.ovrflw=42 14 | log4rpg.appender.print.leftMargin=10 15 | log4rpg.appender.print.rightMargin=10 16 | log4rpg.appender.print.layout=PatternLayout 17 | log4rpg.appender.print.layout.conversionPattern=%z [%-5p] %P(%M).%F (%S) %m%n 18 | 19 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_X1P3.PROPS: -------------------------------------------------------------------------------- 1 | 2 | log4rpg.debug=off, printer 3 | 4 | log4rpg.rootLogger=DEBUG, htmlFile 5 | log4rpg.logger.de.tools400=INFO 6 | 7 | log4rpg.appender.htmlFile=DailyRollingFileAppender 8 | log4rpg.appender.htmlFile.path=log4_x1p3.html 9 | log4rpg.appender.htmlFile.layout=*LIBL/LOG4HTMLAY(HTMLLayout) 10 | 11 | // Enforce a new file every minute! 12 | log4rpg.appender.htmlFile.datePattern=_yyyy-MM-dd-HH.mm. 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_X1P4.PROPS: -------------------------------------------------------------------------------- 1 | 2 | log4rpg.debug=off, printer 3 | 4 | log4rpg.rootLogger=DEBUG, chainsaw 5 | log4rpg.logger.de.tools400=INFO 6 | 7 | log4rpg.appender.chainsaw=*LIBL/LOG4SCKAPP(XMLSocketAppender) 8 | log4rpg.appender.chainsaw.remoteHost=localclient 9 | log4rpg.appender.chainsaw.port=4448 10 | log4rpg.appender.chainsaw.layout=XMLLayout 11 | log4rpg.appender.chainsaw.filter=appName 12 | 13 | log4rpg.filter.appName=*LIBL/LOG4PROFLT(PropertyFilter) 14 | log4rpg.filter.appName.property.application=myApplication 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_X1P5.PROPS: -------------------------------------------------------------------------------- 1 | 2 | log4rpg.debug=off, printer 3 | 4 | log4rpg.rootLogger=DEBUG, xmlFile 5 | log4rpg.logger.de.tools400=INFO 6 | 7 | log4rpg.appender.xmlFile=DailyRollingFileAppender 8 | log4rpg.appender.xmlFile.path=log4_x1p5.xml 9 | log4rpg.appender.xmlFile.layout=XMLLayout 10 | 11 | // Enforce a new file every day! 12 | log4rpg.appender.xmlFile.datePattern=_yyyy-MM-dd. 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_X1P6.PROPS: -------------------------------------------------------------------------------- 1 | 2 | log4rpg.debug=verbose , printer 3 | 4 | log4rpg.rootLogger=DEBUG, chainsawHub 5 | log4rpg.logger.de.tools400=DEBUG 6 | 7 | log4rpg.appender.chainsawHub=*LIBL/LOG4SHBAPP(XMLSocketHubAppender) 8 | log4rpg.appender.chainsawHub.port=4560 9 | log4rpg.appender.chainsawHub.ccsid=819 10 | log4rpg.appender.chainsawHub.layout=XMLLayout 11 | log4rpg.appender.chainsawHub.layout.replaceUnprintableCharacters=true 12 | log4rpg.appender.chainsawHub.filter=appName 13 | 14 | log4rpg.filter.appName=LOG4PROFLT(PropertyFilter) 15 | log4rpg.filter.appName.property.application=myApplication 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_X1P7.PROPS: -------------------------------------------------------------------------------- 1 | 2 | log4rpg.debug=off, printer 3 | 4 | log4rpg.rootLogger=DEBUG, file 5 | log4rpg.logger.de.tools400=INFO 6 | 7 | log4rpg.appender.file=*LIBL/LOG4RLFAPP(RollingFileAppender) 8 | log4rpg.appender.file.path=log4_x1p7.log 9 | log4rpg.appender.file.maxfilesize=128 10 | log4rpg.appender.file.maxbackupindex=10 11 | log4rpg.appender.file.layout=PatternLayout 12 | log4rpg.appender.file.layout.conversionPattern=%z [%-5p] %L/%P(%M).%F (%S) %m%n 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/LOG4_X1P8.PROPS: -------------------------------------------------------------------------------- 1 | 2 | log4rpg.debug=off, printer 3 | 4 | log4rpg.rootLogger=DEBUG, file 5 | log4rpg.logger.de.tools400=INFO 6 | 7 | log4rpg.appender.file=DailyRollingFileAppender 8 | log4rpg.appender.file.path=log4_x1p8.txt 9 | log4rpg.appender.file.layout=SimpleLayout 10 | 11 | // Enforce a new file every day! 12 | log4rpg.appender.file.datePattern=_yyyy-MM-dd. 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PFILTER.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PFILTER) 2 | /DEFINE PFILTER 3 | * 4 | * Who should use this copy book: Developer of filter 5 | * 6 | * This copy book defines the prototypes that are needed to write an 7 | * implementation of an filter 'object'. In order to create an 8 | * filter you have to do these steps: 9 | * a) copy this copy book 10 | * b) rename 'SrvPgmFilter' to the name of your filter, 11 | * e.g. 'MyFilter'. 12 | * c) Optionally remove the lines that are related to 'DEFINE_PROCPTR'. 13 | * You do not need the prototypes with procedure pointers. The 14 | * prototypes with procedure pointers are used by LOG4RPG03. 15 | * d) Make sure that your filter exports the following procedures: 16 | * YourFilter_new() 17 | * YourFilter_decide() 18 | * YourFilter_setProperties() 19 | * YourFilter_delete() 20 | * Do not change the suffix of the procedures or the procedure 21 | * interface! 22 | * e) Feel free to send the new filter to me. I would gladly 23 | * add the filter to the LOG4RPG distribution. 24 | * 25 | * ----------------------------------------- 26 | * Type definitions 27 | * ----------------------------------------- 28 | /COPY QLOG4RPG,PSHARE Type defs shared with appenders & layouts 29 | * 30 | * ----------------------------------------- 31 | * Constants 32 | * ----------------------------------------- 33 | * Valid return values of Filter_decide(): 34 | D cFILTER_ACCEPT... 35 | D C const(1) 36 | D cFILTER_DENY... 37 | D C const(2) 38 | D cFILTER_NEUTRAL... 39 | D C const(3) 40 | * 41 | * ----------------------------------------- 42 | * Filter Prototypes & Type Defs 43 | * ----------------------------------------- 44 | * 45 | * Custom filter ... 46 | * ... prototye: new, returns TRUE on success else FALSE 47 | /IF DEFINED (DEFINE_PROCPTR) 48 | D SrvPgmFilter_new... 49 | D PR N extproc(g_pFilter_new) 50 | /ELSE 51 | D SrvPgmFilter_new... 52 | D PR N extproc('SrvPgmFilter_new') 53 | /ENDIF 54 | D i_pSuper const like(LOG4RPG_pFilter_t ) 55 | D io_pHandle * 56 | D i_propList const like(LOG4RPG_pPropertyList_t ) 57 | D i_prefix const like(LOG4RPG_prefix_t ) 58 | * 59 | * ... prototye: decide, returns the decision of the filter 60 | /IF DEFINED (DEFINE_PROCPTR) 61 | D SrvPgmFilter_decide... 62 | D PR 10I 0 extproc(g_pFilter_decide) 63 | /ELSE 64 | D SrvPgmFilter_decide... 65 | D PR 10I 0 extproc('SrvPgmFilter_decide') 66 | /ENDIF 67 | D i_pHandle * const 68 | D i_pLogEvent const like(LOG4RPG_pLogEvent_t) 69 | * 70 | * ... prototye: setProperties, sets the proeprties for the filter 71 | /IF DEFINED (DEFINE_PROCPTR) 72 | D SrvPgmFilter_setProperties... 73 | D PR 74 | D extproc(g_pFilter_setProperties) 75 | /ELSE 76 | D SrvPgmFilter_setProperties... 77 | D PR 78 | D extproc('SrvPgmFilter_+ 79 | D setProperties') 80 | /ENDIF 81 | D i_pHandle * const 82 | D i_propList const like(LOG4RPG_pPropertyList_t ) 83 | D i_prefix const like(LOG4RPG_prefix_t ) 84 | * 85 | * ... prototye: delete, returns TRUE on success else FALSE 86 | /IF DEFINED (DEFINE_PROCPTR) 87 | D SrvPgmFilter_delete... 88 | D PR N extproc(g_pFilter_delete) 89 | /ELSE 90 | D SrvPgmFilter_delete... 91 | D PR N extproc('SrvPgmFilter_delete') 92 | /ENDIF 93 | D io_pHandle * 94 | * 95 | /ENDIF 96 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG06.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG06) 2 | /DEFINE PLOG4RPG06 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | D LOG4RPG_Property_key_t... 8 | D S 64A varying based(pDummy) 9 | D LOG4RPG_Property_value_t... 10 | D S 128A varying based(pDummy) 11 | * 12 | D LOG4RPG_Property_t... 13 | D DS qualified based(pDummy) 14 | D key like(LOG4RPG_Property_key_t ) 15 | D value like(LOG4RPG_Property_value_t) 16 | * 17 | * ----------------------------------------- 18 | * Constants 19 | * ----------------------------------------- 20 | * 21 | * ----------------------------------------- 22 | * Prototypes 23 | * ----------------------------------------- 24 | R * 25 | R * Creates a new property. 26 | R *Property_new... 27 | R * PR likeds(LOG4RPG_Property_t) 28 | R * extproc('LOG4RPG06+ 29 | R * _Property_new+ 30 | R * ') 31 | R * i_key const like(LOG4RPG_Property_key_t ) 32 | R * i_value const like(LOG4RPG_Property_value_t) 33 | R * 34 | R * Returns the key of a property. 35 | R *Property_getKey... 36 | R * PR like(LOG4RPG_Property_key_t) 37 | R * extproc('LOG4RPG06+ 38 | R * _Property_getKey+ 39 | R * ') 40 | R * i_property const likeds(LOG4RPG_Property_t) 41 | R * 42 | R * Returns the value of a property. 43 | R *Property_getValue... 44 | R * PR like(LOG4RPG_Property_value_t) 45 | R * extproc('LOG4RPG06+ 46 | R * _Property_getValue+ 47 | R * ') 48 | R * i_property const likeds(LOG4RPG_Property_t) 49 | R * 50 | R * Deletes a given property. 51 | R *Property_delete... 52 | R * PR 53 | R * extproc('LOG4RPG06+ 54 | R * _Property_delete+ 55 | R * ') 56 | R * io_property likeds(LOG4RPG_Property_t) 57 | * 58 | /ENDIF 59 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG08.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG08) 2 | /DEFINE PLOG4RPG08 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PTYPES 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * Refer to: PLOG4RPG 17 | * 18 | * Returns *ON if automatic reloading of the 19 | * configuration is enabled, else *OFF. 20 | D Configurator_isAutoReload... 21 | D PR N 22 | D extproc('LOG4RPG08+ 23 | D _Configurator_isAutoReload+ 24 | D ') 25 | * 26 | * Checks for connfiguration changes and reloads 27 | * the configuration data if necessary. 28 | D Configurator_checkAndReloadPropertiesConfiguration... 29 | D PR 30 | D extproc('LOG4RPG08+ 31 | D _Configurator_checkAndReload+ 32 | D PropertiesConfiguration+ 33 | D ') 34 | * 35 | /ENDIF 36 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG09.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG09) 2 | /DEFINE PLOG4RPG09 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PTYPES Private type definitions 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | D cLOG4RPG_PRIORITY_DEBUG... 13 | D C const(1) 14 | D cLOG4RPG_PRIORITY_INFO... 15 | D C const(2) 16 | D cLOG4RPG_PRIORITY_WARN... 17 | D C const(3) 18 | D cLOG4RPG_PRIORITY_ERROR... 19 | D C const(4) 20 | D cLOG4RPG_PRIORITY_FATAL... 21 | D C const(5) 22 | D cLOG4RPG_PRIORITY_NONE... 23 | D C const(99) 24 | * 25 | * ----------------------------------------- 26 | * Prototypes 27 | * ----------------------------------------- 28 | * 29 | * Converts the string passed as argument to an integer level. 30 | D Level_toInt... 31 | D PR like(LOG4RPG_priority_t ) 32 | D extproc('LOG4RPG09+ 33 | D _Level_toInt+ 34 | D ') 35 | D i_level const like(LOG4RPG_level_t ) 36 | * 37 | * Converts the integer passed as argument to a string level. 38 | D Level_toString... 39 | D PR like(LOG4RPG_level_t ) 40 | D extproc('LOG4RPG09+ 41 | D _Level_toString+ 42 | D ') 43 | D i_level const like(LOG4RPG_priority_t ) 44 | * 45 | /ENDIF 46 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG11.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG11) 2 | /DEFINE PLOG4RPG11 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PSHARE Type defs appenders, layouts, filters 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * 17 | * Creates a new layout. 18 | * ==> PLOG4RPG 19 | * 20 | * Formats the given string according to the layout. 21 | D Layout_format... 22 | D PR 23 | D extproc('LOG4RPG11+ 24 | D _Layout_format+ 25 | D ') 26 | D i_pLayout const like(LOG4RPG_pLayout_t ) 27 | D i_pLogEvent const like(LOG4RPG_pLogEvent_t ) 28 | * 29 | * Returns the header of the layout. 30 | D Layout_getHeader... 31 | D PR like(LOG4RPG_header_t ) 32 | D extproc('LOG4RPG11+ 33 | D _Layout_getHeader+ 34 | D ') 35 | D i_pLayout const like(LOG4RPG_pLayout_t ) 36 | * 37 | * Returns the footer of the layout. 38 | D Layout_getFooter... 39 | D PR like(LOG4RPG_footer_t ) 40 | D extproc('LOG4RPG11+ 41 | D _Layout_getFooter+ 42 | D ') 43 | D i_pLayout const like(LOG4RPG_pLayout_t ) 44 | * 45 | * Sets the properties of the specified layout. 46 | D Layout_setProperties... 47 | D PR 48 | D extproc('LOG4RPG11+ 49 | D _Layout_setProperties+ 50 | D ') 51 | D i_pLayout const like(LOG4RPG_pLayout_t ) 52 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 53 | D i_prefix const like(LOG4RPG_prefix_t ) 54 | * 55 | * Returns the new-line character. 56 | D Layout_newLine... 57 | D PR 2A varying 58 | D extproc('LOG4RPG11+ 59 | D _Layout_newLine+ 60 | D ') 61 | * 62 | * Deletes the specified layout. 63 | D Layout_delete... 64 | D PR N 65 | D extproc('LOG4RPG11+ 66 | D _Layout_delete+ 67 | D ') 68 | D io_pLayout like(LOG4RPG_pLayout_t ) 69 | * 70 | * Tests, whether the specified property is known by the 71 | * super Layout. 72 | D Layout_knowsProperty... 73 | D PR N 74 | D extproc('LOG4RPG11+ 75 | D _Layout_knowsProperty+ 76 | D ') 77 | D i_parameter const like(LOG4RPG_Property_key_t ) 78 | * 79 | * Tests a given layout for a NULL value. 80 | D Layout_isNull... 81 | D PR N 82 | D extproc('LOG4RPG11+ 83 | D _Layout_isNull+ 84 | D ') 85 | D i_pLayout const like(LOG4RPG_pLayout_t ) 86 | * 87 | * Returns a NULL layout. 88 | * ==> PLOG4RPG 89 | * 90 | /ENDIF 91 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG14.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG14) 2 | /DEFINE PLOG4RPG14 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PTYPES Private type definitions 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | D cLOG4RPG_INT_DEBUG_QUIET... 13 | D C const(0) 14 | D cLOG4RPG_INT_DEBUG_OFF... 15 | D C const(1) 16 | D cLOG4RPG_INT_DEBUG_ON... 17 | D C const(2) 18 | D cLOG4RPG_INT_DEBUG_VERBOSE... 19 | D C const(3) 20 | * 21 | * ----------------------------------------- 22 | * Prototypes 23 | * ----------------------------------------- 24 | * 25 | * Converts the string passed as argument to an integer debug mode. 26 | D DebugMode_toInt... 27 | D PR 5I 0 28 | D extproc('LOG4RPG14+ 29 | D _DebugMode_toInt+ 30 | D ') 31 | D i_debugMode const like(LOG4RPG_debugMode_t ) 32 | * 33 | * Converts the integer passed as argument to a string debug mode. 34 | D DebugMode_toString... 35 | D PR like(LOG4RPG_debugMode_t ) 36 | D extproc('LOG4RPG14+ 37 | D _DebugMode_toString+ 38 | D ') 39 | D i_debugMode 5I 0 const 40 | * 41 | * Tests, if the specified debug mode is valid (well known). 42 | D DebugMode_isValid... 43 | D PR N 44 | D extproc('LOG4RPG14+ 45 | D _DebugMode_isValid+ 46 | D ') 47 | D i_debugMode const like(LOG4RPG_debugMode_t ) 48 | * 49 | /ENDIF 50 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG15.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG15) 2 | /DEFINE PLOG4RPG15 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PTYPES Private type definitions 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | D cLOG4RPG_INT_DEBUG_OUTPUT_PRINTER... 13 | D C const(1) 14 | D cLOG4RPG_INT_DEBUG_OUTPUT_STDOUT... 15 | D C const(2) 16 | * 17 | * ----------------------------------------- 18 | * Prototypes 19 | * ----------------------------------------- 20 | * 21 | * Converts the string passed as argument to an integer debug output. 22 | D DebugOutput_toInt... 23 | D PR 5I 0 24 | D extproc('LOG4RPG15+ 25 | D _DebugOutput_toInt+ 26 | D ') 27 | D i_debugOutput const like(LOG4RPG_debugOutput_t) 28 | * 29 | * Converts the integer passed as argument to a string debug output. 30 | D DebugOutput_toString... 31 | D PR like(LOG4RPG_debugOutput_t) 32 | D extproc('LOG4RPG15+ 33 | D _DebugOutput_toString+ 34 | D ') 35 | D i_debugOutput 5I 0 const 36 | * 37 | * Tests, if the specified debug output is valid (well known). 38 | D DebugOutput_isValid... 39 | D PR N 40 | D extproc('LOG4RPG15+ 41 | D _DebugOutput_isValid+ 42 | D ') 43 | D i_debugOutput const like(LOG4RPG_debugOutput_t) 44 | * 45 | /ENDIF 46 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG17.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG17) 2 | /DEFINE PLOG4RPG17 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PSHARE Type defs appenders, layouts, filters 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * 17 | * Creates a new filter. 18 | * ==> PLOG4RPG 19 | * 20 | * Decides what to do with the log event. 21 | D Filter_decide... 22 | D PR 10I 0 23 | D extproc('LOG4RPG17+ 24 | D _Filter_decide+ 25 | D ') 26 | D i_pFilter const like(LOG4RPG_pFilter_t ) 27 | D i_pLogEvent const like(LOG4RPG_pLogEvent_t ) 28 | * 29 | * Returns the name of the filter. 30 | D Filter_getName... 31 | D PR like(LOG4RPG_filterName_t ) 32 | D extproc('LOG4RPG17+ 33 | D _Filter_getName+ 34 | D ') 35 | D i_pFilter const like(LOG4RPG_pFilter_t ) 36 | * 37 | * Returns the next filter. 38 | D Filter_getNext... 39 | D PR like(LOG4RPG_pFilter_t ) 40 | D extproc('LOG4RPG17+ 41 | D _Filter_getNext+ 42 | D ') 43 | D i_pFilter const like(LOG4RPG_pFilter_t ) 44 | * 45 | * Sets the next filter of the filter chain. 46 | * ==> PLOG4RPG 47 | * 48 | * Sets the properties of the specified filter. 49 | D Filter_setProperties... 50 | D PR 51 | D extproc('LOG4RPG17+ 52 | D _Filter_setProperties+ 53 | D ') 54 | D i_pFilter const like(LOG4RPG_pFilter_t ) 55 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 56 | D i_prefix const like(LOG4RPG_prefix_t ) 57 | * 58 | * Tests, whether the specified property is known by the 59 | * super filter. 60 | D Filter_knowsProperty... 61 | D PR N 62 | D extproc('LOG4RPG17+ 63 | D _Filter_knowsProperty+ 64 | D ') 65 | D i_parameter const like(LOG4RPG_Property_key_t ) 66 | * 67 | * Deletes a given filter. 68 | D Filter_delete... 69 | D PR N 70 | D extproc('LOG4RPG17+ 71 | D _Filter_delete+ 72 | D ') 73 | D io_pFilter like(LOG4RPG_pFilter_t ) 74 | * 75 | * Tests a given filter for a NULL value. 76 | D Filter_isNull... 77 | D PR N 78 | D extproc('LOG4RPG17+ 79 | D _Filter_isNull+ 80 | D ') 81 | D i_pFilter const like(LOG4RPG_pFilter_t ) 82 | * 83 | * Returns a NULL filter. 84 | * ==> PLOG4RPG 85 | * 86 | /ENDIF 87 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG50.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG50) 2 | /DEFINE PLOG4RPG50 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PSHARE Type defs appenders, layouts, filters 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * Custom appender ... 17 | * ... prototye: new, returns TRUE on success else FALSE 18 | D DailyRollingFileAppender_new... 19 | D PR N 20 | D extproc('DailyRollingFileAppender_+ 21 | D new+ 22 | D ') 23 | D i_pSuper const like(LOG4RPG_pAppender_t ) 24 | D io_pHandle * 25 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 26 | D i_prefix const like(LOG4RPG_prefix_t ) 27 | * 28 | * Returns TRUE if the appender requires a layout. 29 | D DailyRollingFileAppender_requiresLayout... 30 | D PR N 31 | D extproc('DailyRollingFileAppender_+ 32 | D requiresLayout+ 33 | D ') 34 | D i_pHandle * const 35 | * 36 | * ... prototye: append, returns TRUE on success else FALSE 37 | D DailyRollingFileAppender_doAppend... 38 | D PR N 39 | D extproc('DailyRollingFileAppender_+ 40 | D doAppend+ 41 | D ') 42 | D i_pHandle * const 43 | D i_pLogEvent const like(LOG4RPG_pLogEvent_t ) 44 | * 45 | * Used to set the properties of the appender. 46 | D DailyRollingFileAppender_setProperties... 47 | D PR 48 | D extproc('DailyRollingFileAppender_+ 49 | D setProperties+ 50 | D ') 51 | D i_pHandle * const 52 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 53 | D i_prefix const like(LOG4RPG_prefix_t ) 54 | * 55 | * ... prototye: delete, returns TRUE on success else FALSE 56 | D DailyRollingFileAppender_delete... 57 | D PR N 58 | D extproc('DailyRollingFileAppender_+ 59 | D delete+ 60 | D ') 61 | D io_pHandle * 62 | * 63 | /ENDIF 64 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG51.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG51) 2 | /DEFINE PLOG4RPG51 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PSHARE Type defs appenders, layouts, filters 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * Custom appender ... 17 | * ... prototye: new, returns TRUE on success else FALSE 18 | D DailyRollingPrintAppender_new... 19 | D PR N 20 | D extproc('DailyRollingPrintAppender_+ 21 | D new+ 22 | D ') 23 | D i_pSuper const like(LOG4RPG_pAppender_t ) 24 | D io_pHandle * 25 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 26 | D i_prefix const like(LOG4RPG_prefix_t ) 27 | * 28 | * Returns TRUE if the appender requires a layout. 29 | D DailyRollingPrintAppender_requiresLayout... 30 | D PR N 31 | D extproc('DailyRollingPrintAppender_+ 32 | D requiresLayout+ 33 | D ') 34 | D i_pHandle * const 35 | * 36 | * ... prototye: append, returns TRUE on success else FALSE 37 | D DailyRollingPrintAppender_doAppend... 38 | D PR N 39 | D extproc('DailyRollingPrintAppender_+ 40 | D doAppend+ 41 | D ') 42 | D i_pHandle * const 43 | D i_pLogEvent const like(LOG4RPG_pLogEvent_t ) 44 | * 45 | * Used to set the properties of the appender. 46 | D DailyRollingPrintAppender_setProperties... 47 | D PR 48 | D extproc('DailyRollingPrintAppender_+ 49 | D setProperties+ 50 | D ') 51 | D i_pHandle * const 52 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 53 | D i_prefix const like(LOG4RPG_prefix_t ) 54 | * 55 | * ... prototye: delete, returns TRUE on success else FALSE 56 | D DailyRollingPrintAppender_delete... 57 | D PR N 58 | D extproc('DailyRollingPrintAppender_+ 59 | D delete+ 60 | D ') 61 | D io_pHandle * 62 | * 63 | /ENDIF 64 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG52.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG52) 2 | /DEFINE PLOG4RPG52 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PSHARE Type defs appenders, layouts, filters 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * Custom appender ... 17 | * ... prototye: new, returns TRUE on success else FALSE 18 | D NullAppender_new... 19 | D PR N 20 | D extproc('NullAppender_+ 21 | D new+ 22 | D ') 23 | D i_pSuper const like(LOG4RPG_pAppender_t ) 24 | D io_pHandle * 25 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 26 | D i_prefix const like(LOG4RPG_prefix_t ) 27 | * 28 | * Returns TRUE if the appender requires a layout. 29 | D NullAppender_requiresLayout... 30 | D PR N 31 | D extproc('NullAppender_+ 32 | D requiresLayout+ 33 | D ') 34 | D i_pHandle * const 35 | * 36 | * ... prototye: append, returns TRUE on success else FALSE 37 | D NullAppender_doAppend... 38 | D PR N 39 | D extproc('NullAppender_+ 40 | D doAppend+ 41 | D ') 42 | D i_pHandle * const 43 | D i_pLogEvent const like(LOG4RPG_pLogEvent_t ) 44 | * 45 | * Used to set the properties of the appender. 46 | D NullAppender_setProperties... 47 | D PR 48 | D extproc('NullAppender_+ 49 | D setProperties+ 50 | D ') 51 | D i_pHandle * const 52 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 53 | D i_prefix const like(LOG4RPG_prefix_t ) 54 | * 55 | * ... prototye: delete, returns TRUE on success else FALSE 56 | D NullAppender_delete... 57 | D PR N 58 | D extproc('NullAppender_+ 59 | D delete+ 60 | D ') 61 | D io_pHandle * 62 | * 63 | /ENDIF 64 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG60.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG60) 2 | /DEFINE PLOG4RPG60 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PSHARE Type defs appenders, layouts, filters 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * Custom layout ... 17 | * ... prototye: new, returns TRUE on success else FALSE 18 | D PatternLayout_new... 19 | D PR N 20 | D extproc('PatternLayout_+ 21 | D new+ 22 | D ') 23 | D i_pSuper const like(LOG4RPG_pLayout_t ) 24 | D io_pHandle * 25 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 26 | D i_prefix const like(LOG4RPG_prefix_t ) 27 | * 28 | * ... prototye: format, returns the formatted string on success, else ''. 29 | D PatternLayout_format... 30 | D PR 31 | D extproc('PatternLayout_+ 32 | D format+ 33 | D ') 34 | D i_pHandle * const 35 | D i_pLogEvent const like(LOG4RPG_pLogEvent_t ) 36 | * 37 | * ... prototye: setProperties, sets the proeprties for the layout 38 | D PatternLayout_setProperties... 39 | D PR 40 | D extproc('PatternLayout_+ 41 | D setProperties+ 42 | D ') 43 | D i_pHandle * const 44 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 45 | D i_prefix const like(LOG4RPG_prefix_t ) 46 | * 47 | * ... prototye: delete, returns TRUE on success else FALSE 48 | D PatternLayout_delete... 49 | D PR N 50 | D extproc('PatternLayout_+ 51 | D delete+ 52 | D ') 53 | D io_pHandle * 54 | * 55 | /ENDIF 56 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG61.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG61) 2 | /DEFINE PLOG4RPG61 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PSHARE Type defs appenders, layouts, filters 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * Custom layout ... 17 | * ... prototye: new, returns TRUE on success else FALSE 18 | D SimpleLayout_new... 19 | D PR N 20 | D extproc('SimpleLayout_+ 21 | D new+ 22 | D ') 23 | D i_pSuper const like(LOG4RPG_pLayout_t ) 24 | D io_pHandle * 25 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 26 | D i_prefix const like(LOG4RPG_prefix_t ) 27 | * 28 | * ... prototye: format, returns the formatted string on success, else ''. 29 | D SimpleLayout_format... 30 | D PR 31 | D extproc('SimpleLayout_+ 32 | D format+ 33 | D ') 34 | D i_pHandle * const 35 | D i_pLogEvent const like(LOG4RPG_pLogEvent_t ) 36 | * 37 | * ... prototye: setProperties, sets the proeprties for the layout 38 | D SimpleLayout_setProperties... 39 | D PR 40 | D extproc('SimpleLayout_+ 41 | D setProperties+ 42 | D ') 43 | D i_pHandle * const 44 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 45 | D i_prefix const like(LOG4RPG_prefix_t ) 46 | * 47 | * ... prototye: delete, returns TRUE on success else FALSE 48 | D SimpleLayout_delete... 49 | D PR N 50 | D extproc('SimpleLayout_+ 51 | D delete+ 52 | D ') 53 | D io_pHandle * 54 | * 55 | /ENDIF 56 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG62.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG62) 2 | /DEFINE PLOG4RPG62 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PSHARE Type defs appenders, layouts, filters 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * Custom layout ... 17 | * ... prototye: new, returns TRUE on success else FALSE 18 | D XMLLayout_new... 19 | D PR N 20 | D extproc('XMLLayout_+ 21 | D new+ 22 | D ') 23 | D i_pSuper const like(LOG4RPG_pLayout_t ) 24 | D io_pHandle * 25 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 26 | D i_prefix const like(LOG4RPG_prefix_t ) 27 | * 28 | * ... prototye: format, returns the formatted string on success, else ''. 29 | D XMLLayout_format... 30 | D PR 31 | D extproc('XMLLayout_+ 32 | D format+ 33 | D ') 34 | D i_pHandle * const 35 | D i_pLogEvent const like(LOG4RPG_pLogEvent_t ) 36 | * 37 | * Returns the header of this layout. 38 | D XMLLayout_getHeader... 39 | D PR like(LOG4RPG_header_t) 40 | D extproc('XMLLayout+ 41 | D _getHeader') 42 | D i_pHandle * const 43 | * 44 | * Returns the header of this layout. 45 | D XMLLayout_getFooter... 46 | D PR like(LOG4RPG_footer_t) 47 | D extproc('XMLLayout+ 48 | D _getFooter') 49 | D i_pHandle * const 50 | * 51 | * ... prototye: setProperties, sets the proeprties for the layout 52 | D XMLLayout_setProperties... 53 | D PR 54 | D extproc('XMLLayout_+ 55 | D setProperties+ 56 | D ') 57 | D i_pHandle * const 58 | D i_pPropList const like(LOG4RPG_pPropertyList_t ) 59 | D i_prefix const like(LOG4RPG_prefix_t ) 60 | * 61 | * ... prototye: delete, returns TRUE on success else FALSE 62 | D XMLLayout_delete... 63 | D PR N 64 | D extproc('XMLLayout_+ 65 | D delete+ 66 | D ') 67 | D io_pHandle * 68 | * 69 | /ENDIF 70 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG97.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG97) 2 | /DEFINE PLOG4RPG97 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PTYPES 8 | /COPY QLOG4RPG,PLOG4RPG06 Property 9 | * 10 | D LOG4RPG_syncTicket_t... 11 | D DS qualified based(pDummy) 12 | D jobName 28A 13 | D alcTime Z 14 | * 15 | * ----------------------------------------- 16 | * Constants 17 | * ----------------------------------------- 18 | * 19 | * ----------------------------------------- 20 | * Prototypes 21 | * ----------------------------------------- 22 | * 23 | * Enables or disables logging of sync lock holder. 24 | D Synchronisation_setLogMode... 25 | D PR 26 | D extproc('LOG4RPG97+ 27 | D _Synchronisation_setLogMode+ 28 | D ') 29 | D i_mode N const 30 | * 31 | * Sets the object description of the synchronisation object. 32 | D Synchronisation_setObjectDesc... 33 | D PR 34 | D extproc('LOG4RPG97+ 35 | D _Synchronisation_setObjectDesc+ 36 | D ') 37 | D i_text 50A const varying 38 | * 39 | * Start synchronisation by adding a lock on a given synchronisation 40 | * data area. 41 | D Synchronisation_start... 42 | D PR N 43 | D extproc('LOG4RPG97+ 44 | D _Synchronisation_start+ 45 | D ') 46 | D i_dtaara 10A const 47 | D i_lib 10A const 48 | D o_ticket likeds(LOG4RPG_syncTicket_t ) 49 | D o_msg likeds(msg_t ) 50 | D options(*nopass: *omit) 51 | * 52 | * End synchronisation and release lock. 53 | D Synchronisation_end... 54 | D PR 55 | D extproc('LOG4RPG97+ 56 | D _Synchronisation_end+ 57 | D ') 58 | D io_ticket likeds(LOG4RPG_syncTicket_t ) 59 | D o_msg likeds(msg_t ) 60 | D options(*nopass: *omit) 61 | * 62 | /ENDIF 63 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PLOG4RPG98.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PLOG4RPG98) 2 | /DEFINE PLOG4RPG98 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PTYPES 8 | * 9 | * ----------------------------------------- 10 | * Constants 11 | * ----------------------------------------- 12 | * 13 | * ----------------------------------------- 14 | * Prototypes 15 | * ----------------------------------------- 16 | * 17 | * Converts a given property to a file-size-value. 18 | D OptionConverter_toFileSize... 19 | D PR 20I 0 20 | D extproc('LOG4RPG98+ 21 | D _OptionConverter_toFileSize+ 22 | D ') 23 | D i_value value like(LOG4RPG_Property_value_t) 24 | D i_default 20I 0 value 25 | * 26 | * Converts a given property to a RPG boolean value. 27 | D OptionConverter_toBoolean... 28 | D PR N 29 | D extproc('LOG4RPG98+ 30 | D _OptionConverter_toBoolean+ 31 | D ') 32 | D i_value value like(LOG4RPG_Property_value_t) 33 | D i_default N value 34 | * 35 | * Converts a given property to a RPG integer value. 36 | D OptionConverter_toInt... 37 | D PR 10I 0 38 | D extproc('LOG4RPG98+ 39 | D _OptionConverter_toInt+ 40 | D ') 41 | D i_value value like(LOG4RPG_Property_value_t) 42 | D i_default 10I 0 value 43 | * 44 | /ENDIF 45 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PSHARE.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PSHARE) 2 | /DEFINE PSHARE 3 | * 4 | * ----------------------------------------- 5 | * Type definitions 6 | * ----------------------------------------- 7 | /COPY QLOG4RPG,PLOG4RPG Public interface & type definitions 8 | /COPY QLOG4RPG,PLOG4RPG06 Property 9 | /COPY QLOG4RPG,PLOG4RPG07 PropertyList 10 | /COPY QLOG4RPG,PLOG4RPG03 Appender 11 | /COPY QLOG4RPG,PLOG4RPG10 LogLog 12 | /COPY QLOG4RPG,PLOG4RPG11 Layout 13 | /COPY QLOG4RPG,PLOG4RPG16 LogEvent 14 | /COPY QLOG4RPG,PLOG4RPG17 Filter 15 | /COPY QLOG4RPG,PLOG4RPG99 Helper 16 | * 17 | * ----------------------------------------- 18 | * Type definitions shared with 19 | * appenders & layouts 20 | * ----------------------------------------- 21 | * 22 | D LOG4RPG_prefix_t... 23 | D S 128A varying based(pDummy) 24 | * 25 | /ENDIF 26 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/PTYPES.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(PTYPES) 2 | /DEFINE PTYPES 3 | * 4 | * ========================================= 5 | * Defines internal used type templates 6 | * ========================================= 7 | * 8 | * ----------------------------------------- 9 | * Type definitions 10 | * ----------------------------------------- 11 | /DEFINE TYPES_ONLY 12 | /COPY QLOG4RPG,PLOG4RPG Public API Specification 13 | /COPY QLOG4RPG,PLOG4RPG04 AppenderList 14 | * 15 | * ----------------------------------------- 16 | * Constants 17 | * ----------------------------------------- 18 | D cROOT_LOGGER... 19 | D C 'root' 20 | * 21 | * @deprecated, use *on instead 22 | /IF NOT DEFINED(cTrue) 23 | /DEFINE cTrue 24 | D cTrue C *on 25 | /ENDIF 26 | * 27 | * @deprecated, use *off instead 28 | /IF NOT DEFINED(cFalse) 29 | /DEFINE cFalse 30 | D cFalse C *off 31 | /ENDIF 32 | * 33 | * ----------------------------------------- 34 | * Internal type definitions 35 | * ----------------------------------------- 36 | * 37 | D LOG4RPG_formattedText_t... 38 | D S 4096A varying template 39 | * 40 | D LOG4RPG_footer_t... 41 | D S like(LOG4RPG_header_t) 42 | D template 43 | * 44 | D LOG4RPG_header_t... 45 | D S 4096A varying template 46 | * 47 | D LOG4RPG_logger_t... 48 | D DS qualified template 49 | D node 10I 0 50 | D pParent * 51 | D name like(LOG4RPG_loggerName_t ) 52 | D priority like(LOG4RPG_priority_t ) 53 | D pAppenderList like(LOG4RPG_pAppenderList_t ) 54 | D pChildren like(BasicList_handle_t ) 55 | * 56 | D LOG4RPG_priority_t... 57 | D S 10I 0 template 58 | * 59 | D LOG4RPG_procedure_t... 60 | D S 128A varying template 61 | * 62 | D LOG4RPG_qJob_t DS qualified template 63 | D name 10A 64 | D user 10A 65 | D nbr 6A * 66 | * 67 | /ENDIF 68 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/QUSRJOBI.RPGLE: -------------------------------------------------------------------------------- 1 | /IF NOT DEFINED(QUSRJOBI) 2 | /DEFINE QUSRJOBI 3 | * 4 | * Retrieve Job Information (QUSRJOBI) API 5 | D QUSRJOBI PR extpgm('QUSRJOBI') 6 | D o_rcvVar 32767A options(*varsize) 7 | D i_lenRcvVar 10I 0 const 8 | D i_format 8A const 9 | D i_qJob 26A const 10 | D i_intJobID 16A const 11 | D io_errCode 32767A options(*varsize) 12 | * 13 | D jobi0600_t DS qualified template 14 | D bytRet 10I 0 15 | D bytAvl 10I 0 16 | D job 10A 17 | D user 10A 18 | D nbr 6A 19 | D intJobID 16A 20 | D status 10A 21 | D type 1A 22 | D subType 1A 23 | D jobSws 8A 24 | D endStatus 1A 25 | D sbsD 10A 26 | D sbsDLib 10A 27 | D curUser 10A 28 | D dbcs 1A 29 | D exitKey 1A 30 | D cancelKey 1A 31 | D prdRetCode 10I 0 32 | D userRetCode 10I 0 33 | D pgmretCode 10I 0 34 | D spcEnv 10A 35 | D device 10A 36 | D grpPrf 10A 37 | D grpPrfAry 10A dim(15) 38 | D jobUsrID 10A 39 | D jobUsrIDStg 1A 40 | * 41 | /ENDIF 42 | -------------------------------------------------------------------------------- /Log4rpg/QLOG4RPG/SDS.RPGLE: -------------------------------------------------------------------------------- 1 | DEF /IF NOT DEFINED(SDS) 2 | DEF /DEFINE SDS 3 | * 4 | D sds SDS qualified 5 | D pgmName 1 10A 6 | D pgmStat 11 15S 0 7 | D prevStat 16 20S 0 8 | D lastSeq 21 28A 9 | D lastSubr 29 36A 10 | D nbrParm 37 39S 0 11 | D excType 40 42A 12 | D excNbr 43 46A 13 | D miInstruction 47 50A 14 | D workArea 51 80A 15 | DEF /IF DEFINED(SDS_EXTENDED) 16 | D pgmLib 81 90A 17 | D excData 91 170A 18 | D rnx9001Exc 171 174A 19 | D lastFileLong 175 184A 20 | D unused_1 185 190A 21 | D datFmt 191 198A 22 | D year 199 200S 0 23 | D lastFileShort 201 208A 24 | D fileStat 209 243A 25 | D job 244 253A 26 | D user 254 263A 27 | D nbr 264 269S 0 28 | D startDate 270 275S 0 29 | D runDate 276 281S 0 30 | D runTime 282 287S 0 31 | D compDate 288 293A 32 | D compTime 294 299A 33 | D compLevel 300 303A 34 | D srcFile 304 313A 35 | D srcLib 314 323A 36 | D srcMbr 324 333A 37 | D pgmContProc 334 343A 38 | D modContProc 344 353A 39 | D unused_2 354 429A 40 | DEF /ENDIF 41 | DEF /ENDIF 42 | -------------------------------------------------------------------------------- /Log4rpg/QXML/LOG4RPG.XML: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/Log4rpg/QXML/LOG4RPG.XML -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Log4rpg - A powerful logging service for RPG on IBM i 2 | 3 | ## Description 4 | 5 | Debugging an application can be a very time consuming task. In particular this is true for applications that are made of small and smallest procedures and when the programmer does not exactly know where the error happens. For every procedure he has to decide whether to step over or step into it. Lots of debugging minutes can get lost because of a little mistake due to low concentration. 6 | 7 | Inserting log statements into the code can ease the programmer’s life. The log reflects the program flow and lets the programmer know what happens. Hence it often is easier to locate the area where the bug sits. 8 | That is what Log4rpg is made for. Log4rpg is a powerful logger that was inspired by the great LOG4J for Java. Like LOG4J it supports: 9 | 10 | • A logger hierarchy 11 | 12 | • Pluggable appenders 13 | 14 | • Pluggable Layouts 15 | 16 | With Log4rpg it is possible to enable and disable logging just by modifying a configuration file. There is no need for changing code and compiling the program. 17 | 18 | ## Usage 19 | 20 | Detailed documentation is privided on the [Log4rpg](documentation/Log4rpg.md) documentation pages. 21 | 22 | ## Installation 23 | 24 | Installing Log4rpg is a bit uncomfortable, because I could not yet migrate all my projects from Sourceforge to GitHub. Basically there are two options: 25 | 26 | * Cloning (Git, GitHub) or checking out (SVN, Sourceforge) the projects and importing them to RDi as i Projects. 27 | * Downloading the XML packages and running the installation utility. 28 | 29 | This document focuses on the XML packages and the installer, because it seems as if still a lot of people are not familiar with SVN and Git. 30 | 31 | ### Prerequisites 32 | 33 | The Log4rpg requires two additional service programs: 34 | 35 | * [BASICS1](https://sourceforge.net/p/tools400/code/HEAD/tree/rpg-srvpgm/BASICS1/trunk/QXML/) 36 | * [IFS](https://sourceforge.net/p/tools400/code/HEAD/tree/rpg-srvpgm/BASICS1/trunk/QXML/) 37 | 38 | Both service programs are hosted on Sourceforge. 39 | 40 | ### Installation 41 | 42 | Start with downloading the XML packages to your PC. Click the link, open the member and click the download link or button: 43 | 44 | * [BASICS1](https://sourceforge.net/p/tools400/code/HEAD/tree/rpg-srvpgm/BASICS1/trunk/QXML/) 45 | * [IFS](https://sourceforge.net/p/tools400/code/HEAD/tree/rpg-srvpgm/BASICS1/trunk/QXML/) 46 | * [LOG4RPG](https://github.com/tools400/log4rpg/tree/master/Log4rpg/QXML) 47 | 48 | Then logon to your IBM i system and follow these steps: 49 | 50 | * Create a library `LOG4RPG`: 51 | 52 | `CRTLIB LIB(LOG4RPG) TEXT('Tools/400 Log4rpg Utility')` 53 | 54 | * Create a source physical file with CCSID 273 and record length 112: 55 | 56 | `CRTSRCPF FILE(LOG4RPG/QXML) RCDLEN(112) CCSID(273)` 57 | 58 | * Upload the XML files. 59 | * Open member IFS and copy everything between the following lines into a new RPGLE source member `INSTALLER`: 60 | * `/// START OF INSTALL PGM HERE` 61 | * `/// END OF INSTALL PGM HERE` 62 | 63 | Actually all 3 XML packages contain the same installer. The problem is that you cannot open BASICS1 and LOG4RPG with SEU, because both packages exceeds 32764 records. However you can use RDi or a PC text editor for extracting the installer program. 64 | 65 | * Compile the installation utility: 66 | 67 | `CRTBNDRPG PGM(QTEMP/INSTALLER) SRCFILE(LOG4RPG/QXML) DFTACTGRP(*NO) ACTGRP(*NEW)` 68 | 69 | * Run the following commands and answer the questions with one of the displayed options: 70 | 71 | `CALL PGM(QTEMP/INSTALLER) PARM(('BASICS1') ('QXML') ('LOG4RPG'))` 72 | 73 | `CALL PGM(QTEMP/INSTALLER) PARM(('IFS') ('QXML') ('LOG4RPG'))` 74 | 75 | `CALL PGM(QTEMP/INSTALLER) PARM(('LOG4RPG') ('QXML') ('LOG4RPG'))` 76 | 77 | The questions asked by BASICS1 are: 78 | 79 | * _Create sample programs? (YES, NO)_ - typically you would answer `NO` 80 | * _C-Compiler available? (C_YES, C_NO)_ - if in doubt, try `C_YES` first 81 | 82 | The questions asked by IFS are: 83 | 84 | * _Select language (GER, ENG)_ - answer it with your preferred language 85 | * _Use *LIBL at runtime? (L_YES, L_NO)_ - answer it with `L_NO` if you do not want to use `*LIBL` for resolving service program BASICS1 at runtime 86 | 87 | The questions asked by LOG4RPG are: 88 | 89 | * _Use *LIBL at runtime? (L_YES, L_NO)_ - answer it with `L_NO` if you do not want to use `*LIBL` for resolving service program BASICS1 at runtime 90 | * _Create sample programs? (YES, NO)_ - typically you would answer `NO` 91 | 92 | **Hint: The answers are case-insensitive.** 93 | 94 | --- 95 | 96 | © 2025, Thomas Raddatz 97 | -------------------------------------------------------------------------------- /documentation/Internal_Log.md: -------------------------------------------------------------------------------- 1 | # Internal Log 2 | 3 | *Log4rpg* has a built-in log that can be used to learn more about the internals of *Log4rpg* or to debug it. 4 | 5 | The internal log is controlled by the `log4rpg.debug` property: 6 | 7 | ```prioperties 8 | log4rpg.debug=on, printer 9 | ``` 10 | 11 | The first parameter specifies the log level, hence how detailed the log is. The valid values are: 12 | 13 | - quiet - absolutely no log events are written to the log 14 | 15 | - off - only warnings or error messages are written to the log 16 | 17 | - on - the program flow is written to the log 18 | 19 | - verbose - each and evrything is written to the log 20 | 21 | The second parameter specifies the output target. The valid values are: 22 | 23 | - printer - log events are written to a spool file 24 | 25 | - stdout - log events are written to STDOUT 26 | 27 | It is also possible to enable/disable the internal log by calling procedure [Logger_setInternalDebugging](reference/Logger_setInternalDebugging___Enable_Disable_internal_log.md). 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/Log_Level.md: -------------------------------------------------------------------------------- 1 | # Log-Level 2 | 3 | Log4rpg supports 5 different log levels. The log levels are used to determine how detailed a log should be: 4 | 5 | - DEBUG 6 | 7 | - INFO 8 | 9 | - WARN 10 | 11 | - ERROR 12 | 13 | - FATAL 14 | 15 | Log level *DEBUG* causes a very detailed log while level *FATAL* results in a basic log. All other log level are used to produce logs between *DEBUG* and *FATAL*. 16 | 17 | *** 18 | © 2000-2025, Thomas Raddatz 19 | -------------------------------------------------------------------------------- /documentation/Logger_Hierarchy.md: -------------------------------------------------------------------------------- 1 | # Logger Hierarchy 2 | 3 | Log4rpg implements a logger hierachy similar to the one of Log4j. The logger hierarchy makes it easy to switch on or off a whole bunch of loggers at once. The logger hierarchy is build from the names of the logger. Hence the programmer can define a hierarchy that satisfies his needs. 4 | 5 | **Rule 1**: A logger is the parent of another logger in case that its name followed by a dot is the prefix of the name of the child logger. 6 | 7 | **Rule 2**: The root logger is at the top of the logger hierarchy. It does not have any parents. Each logger that has no parent according to the first rule is a child of the root logger. 8 | 9 | The following properties are taken from the parent logger if not yet set for the child logger: 10 | 11 | - Log-Level 12 | 13 | - Appender List 14 | 15 | One option to stablish a logger hierarchy is to use logical names. Given that an application has a module '*CustomerOrder*' that consists of '*Order*' and '*Invoice*', '*Invoice*' could consist of '*Create*' and '*Print*'. Based on this assumptions the logger hierarchy may look like this: 16 | 17 | - root 18 | 19 | - CustomerOrder 20 | 21 | - CustomerOrder.Order 22 | 23 | - CustomerOrder.Invoice 24 | 25 | - CustomerOrder.Invoice.Create 26 | 27 | - CustomerOrder.Invoice.Print 28 | 29 | Now the log level of '*CustomerOrder*' can be set to '*FATAL*' with appender '*file*': 30 | 31 | ```properties 32 | log4rpg.logger.customerOrder=FATAL, file 33 | ``` 34 | 35 | But the log level of '*CustomerOrder.Invoice.Create*' can independently changed to '*DEBUG*': 36 | 37 | ```properties 38 | log4rpg.logger.customerOrder.invoice.create=DEBUG 39 | ``` 40 | 41 | That means that a basic log is produced for '*CustomerOrder*' and that a detailed log is written for '*CustomerOrder.Invoice.Create*'. 42 | 43 | That is what how the configuration file might look like: 44 | 45 | ```properties 46 | log4rpg.debug=on, printer 47 | 48 | log4rpg.logger.customerOrder=FATAL, file 49 | log4rpg.logger.customerOrder.invoice.create=DEBUG 50 | log4rpg.logger.customerOrder.invoice.create.whatEverElse=WARN 51 | 52 | log4rpg.appender.file=DailyRollingFileAppender 53 | log4rpg.appender.file.path=log4rpg.log 54 | log4rpg.appender.file.datePattern=_YYYY-MM-dd-HH.mm. 55 | log4rpg.appender.filelayout=PatternLayout 56 | log4rpg.appender.file.conversionPattern=%z \[%-5p\] %P(%M).%F (%S) %m%n 57 | ``` 58 | 59 | All children of '*CustomerOrder*' inherit the '*file*' appender of '*CustomerOrder*' because there are no appenders defined for the children. In addition the '*CustomerOrder.Order*' logger inherits log level '*FATAL*'. 60 | 61 | Last but not least the internal debug log of Log4rpg is enabled. It looks like this: 62 | 63 | ```text 64 | log4rpg:WARN Could not find root logger information. Is this OK? 65 | log4rpg:WARN No appenders could be found for logger \[root\] 66 | log4rpg:WARN Please initialize the log4rpg system properly. 67 | ``` 68 | 69 | The Log4rpg debug log complains about that Log4rpg is not properly configured because the configuration file does not specify **root logger** properties. 70 | 71 | The root logger should always be configured, because it is the parent for all loggers without an ancestor. 72 | 73 | *** 74 | (c) 2025, Thomas Raddatz -------------------------------------------------------------------------------- /documentation/Overview.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Usually it is a quite time consuming job to debug an application. The time you need to get the error increases the smaller the pieces of the application are. The programmer often has to use the single-step mode of the debugger to get close to the bug. When concentration goes down he often needs several attempts due to his fingers getting faster and faster. Before he realized what happened, he again stepped over the intersting part of the code. 4 | 5 | Logging enables the programmer to watch the program flow. That makes it a lot easier to locate the bug. The amount of lines of code the programmer has to analyse is reduced and usually the programmer gets the bug faster. having said that it is clear that I am not talking about a big secret. Moost of the programmers know that but do not want to change and recompile the application just to get logging statements. 6 | 7 | What, if you had a logger that could be configured without changing the source code. Would'nt that be nice? 8 | 9 | That is the point when Log4rpg comes into play. Log4rpg is a powerful logger that was inspired by the great Java Log4j utility. Similar to Log4j it supports: 10 | 11 | - a logger hierarchy 12 | 13 | - user defined appender 14 | 15 | - user defined layouts 16 | 17 | Log4rpg is configured using IFS files or file member. Hence no changes to the source code are required to enable or disable Log4rpg. 18 | 19 | The output of Log4rpg can be send to everywhere because it is up to you to use an appropriate appender. It is the appender that determines what to do with the log event. If there is not yet an appender that fits your needs - develop one and make it public. 20 | 21 | Log4rpg comes with predefined appenders to make it easier to start. The '*DailyRollingFileAppender*' appends log events to an IFS file. The '*DailyRollingPrintAppender*' write the log events to a printer file. The '*NullAppender*' passes the log events to a NULL device. 22 | 23 | While it is up to the appender to send the log events to a target, it is up to the layouts to do the necessary formatting. For example there could be a layout that formats the log event according to the rules of a CSV string. In addition the layout is responsible for gathering and adding additional information to the log event. As with appenders Log4rpg is shipped with three ready-to-go layouts: '*PatternLayout*', '*SimpleLayout*' und '*XMLLayout*'. 24 | 25 | If that is not enough: Write your own appenders and layouts. 26 | 27 | *** 28 | © 2000-2025, Thomas Raddatz 29 | -------------------------------------------------------------------------------- /documentation/Quickstart.md: -------------------------------------------------------------------------------- 1 | # Quickstart 2 | 3 | Log4rpg comes as a service program that other programs can bind to. The programs that want to utilize *Log4rpg* must bind to service program `LOG4RPG`. The appropriate creation command looks like this: 4 | 5 | ```text 6 | CRTPGM PGM(yourLibName/yourPgmName) **BNDSRVPGM(LOG4RPG)** 7 | ``` 8 | 9 | A modules that must call a *Log4rpg* procedures, such as [Logger_getLogger()](reference/Logger_getLogger___Get_logger_handle.md), must include copy book `PLOG4RPG`. Please look at the included example programs: 10 | 11 | - LOG4_EXP1 - Example 1 - Properties From Stream File 12 | - LOG4_EXP2 - Example 2 - Properties From Member 13 | - LOG4_EXP3 - Example 3 - Programmatically Log4rpg Configuration 14 | - LOG4_EXP4 - Example 4 - Speed Test 15 | 16 | You can call these example with the following configuration members: 17 | 18 | - LOG4_X1P1 - Configures a DailyRollingFileAppender 19 | - LOG4_X1P2 - Configures a DailyRollingPrintAppender 20 | - LOG4_X1P3 - Configures a DailyRollingFileAppender + HTMLLayout 21 | - LOG4_X1P4 - Configures a XMLSocketAppender for Chainsaw 22 | - LOG4_X1P5 - Configures a DailyRollingFileAppender + XMLLayout 23 | - LOG4_X1P6 - Configures a XMLSocketHubAppender for Chainsaw 24 | - LOG4_X1P7 - Configures a RollingFileAppender 25 | - LOG4_X1P8 - Configures a DailyRollingFileAppender + SimpleLayout 26 | 27 | For example: 28 | 29 | ```text 30 | CALL PGM(LOG4_EXP2) PARM('mbr:qlog4rpg.log4_x1p4') 31 | ``` 32 | 33 | The first step towards a working logger is to properly configure *Log4rpg*. The easiest way to accomplish that is to call: 34 | 35 | - [Configurator_loadDefaultConfiguration()](reference/Configurator_loadDefaultConfiguration.md) 36 | 37 | That configures *Log4rpg* using the [DailyRollingFileAppender](appender/Appender___DailyRollingFileAppender.md) with a [PatternLayout](layout/Layout___PatternLayout.md). The log level is set to `DEBUG` and the output goes to file `log4rpg.log` in the current directory of the user. 38 | 39 | The next step is getting a logger handle. Call one of following procedures to get one: 40 | 41 | - [Logger_getRootLogger()](reference/Logger_getRootLogger___Get_root_logger.md) 42 | 43 | - [Logger_getLogger()](reference/Logger_getLogger___Get_logger_handle.md) 44 | 45 | The handle identifies a logger. It is used whenever a log statement must be logged. This time you should call [Logger_getRootLogger()](reference/Logger_getRootLogger___Get_root_logger.md) to keep it simple. 46 | 47 | The log level can be changed calling: 48 | 49 | - [Logger_setLevel()](reference/Logger_setLevel___Set_log_Level.md) 50 | 51 | Now that Log4rpg is properly configured, log events can be logged with the following procedures: 52 | 53 | - [Logger_debug()](reference/Logger_debug___Log_DEBUG_statement.md) 54 | 55 | - [Logger_info()](reference/Logger_info___Log_INFO_statement.md) 56 | 57 | - [Logger_warn()](reference/Logger_warn___Log_WARN_statement.md) 58 | 59 | - [Logger_error()](reference/Logger_error___Log_ERROR_statement.md) 60 | 61 | - [Logger_fatal()](reference/Logger_fatal___Log_FATAL_statement.md) 62 | 63 | The first thing all these procedure do is to checking the log level in order to determine whether the log event has to be logged or not. The following procedure can used in case that a log event must be logged regardless of the log level: 64 | 65 | - [Logger_forcedLog()](reference/Logger_forcedLog___Log_statement.md) 66 | 67 | All *Log4rpg* settings stay active until the activation group that hosts the `LOG4RPG` service program is reclaimed. 68 | 69 | *** 70 | © 2000-2025, Thomas Raddatz 71 | -------------------------------------------------------------------------------- /documentation/appender/Appender.md: -------------------------------------------------------------------------------- 1 | # Appender 2 | 3 | ## Description 4 | 5 | Appender are used to append the log event to an arbitrary output target. Usually log events are written to a file. However it is also possible to send log events over the Internet using e-mail or a socket connection. 6 | 7 | *Log4rpg* is shipped with three ready-to-go appenders: 8 | 9 | - [DailyRollingFileAppender](Appender___DailyRollingFileAppender.md) 10 | - [DailyRollingPrintAppender](Appender___DailyRollingPrintAppender.md) 11 | - [NullAppender](Appender___NullAppender.md) 12 | - [RollingFileAppender](Appender___RollingFileAppender.md) 13 | - [XmlSocketAppender](Appender___XmlSocketAppender.md) 14 | - [XmlSocketHubAppender](Appender___XmlSocketHubAppender.md) 15 | 16 | Based on the shipped appenders and with the help of your phantasy you can write appenders for whatever target you want. 17 | 18 | Please refer to member `PAPPENDER` to get additinal information about writing appenders. 19 | 20 | ## Configuration 21 | 22 | Appenders are defined in the *Log4rpg* properties file. They are independant objects that can be assigned to loggers. An appender entry starts with `log4rpg.appender.` followed by an arbitrary name of the appender. The service program implementing the appender follows right after the equal sign. Example: 23 | 24 | ```properties 25 | log4rpg.appender.file=*LIBL/LOG4RPG(DailyRollingFileAppender) 26 | ``` 27 | 28 | The appender properties are added like this: 29 | 30 | ```properties 31 | log4rpg.appender.file.path=log4_x1p1.log 32 | log4rpg.appender.file.layout=PatternLayout 33 | ``` 34 | 35 | ## API Reference 36 | 37 | - [Appender_new()](reference/Appender_new___Create_appender.md) 38 | - [Appender_setFilter()](reference/Appender_setFilter___Set_filter_for_appender.md) 39 | - [Appender_setLayout()](reference/Appender_setLayout___Set_layout_for_appender.md) 40 | 41 | *** 42 | © 2000-2025, Thomas Raddatz 43 | -------------------------------------------------------------------------------- /documentation/appender/Appender___DailyRollingFileAppender.md: -------------------------------------------------------------------------------- 1 | # DailyRollingFileAppender 2 | 3 | **Service program:** built-in\ 4 | **Procedure:** DailyRollingFileAppender 5 | 6 | | Property | Value | Comments | 7 | |:-------------|:----------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 8 | | path | path-name | Name of the IFS file | 9 | | ccsid | ccsid-value | CCSID used to create new the log files.
Default: 850 | 10 | | share | true \| false
or 1 \| 0 | Specifies whether to share the log file for writing with other jobs or not.
Default: false | 11 | | syncObj | library/objName | Specifies a data area that is used to synchronize changing the log file. This properties is used only if `share` is set to `true`.
Default: `QGPL/LOG4RPG50` | 12 | | syncLogMode | true \| false
or 1 \| 0 | Specifies whether the data area is updated with the name of the job holding the synchronisation lock. This properties is used only if `share` is set to `true`.
Default: false | 13 | | syncText | object-description | Object description of the data area that is used as the synchronisation object. This properties is used only if `share` is set to `true`. | 14 | | datePattern | date-pattern | Pattern used to test, if a new file has to be started:
dd - Days
MM - Months
yyyy - Years
mm - Minutes
HH - Hours
. - Insert position | 15 | | layout | layout-name | Name of the layout used to format the log events: `LIB/SRVPGM(ProcedurePrefix)`.
The built-in layouts can be specified by the following short cuts:
- PatternLayout
- SimpleLayout
- XMLLayout | 16 | | writeHeader | true \| false
or 1 \| 0 | Specifies whether layout header data is appended or not. | 17 | | writeFooter | true \| false
or 1 \| 0 | Specifies whether layout footer data is appended or not. | 18 | 19 | ## Example date-patterns 20 | 21 | `-yyyy-MM-dd.` 22 | 23 | An new file is started at midnight. The current value of the date pattern is inserted before the dot of the file name. If the current outfile is named `foobar.log`, then it will be renamed to `foobar-2006-07-11.log` at midnight 11.07.2006. The log is continued in a new file `foobar.log`. 24 | 25 | `.yyyy-MM-dd-HH` 26 | 27 | Changes the log file every hour. At 11.07.2006 at 8:00Uhr `foobar.log` is renamed to `foobar.log.2006-07-11-07`. 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/appender/Appender___DailyRollingPrintAppender.md: -------------------------------------------------------------------------------- 1 | # DailyRollingPrintAppender 2 | 3 | **Service program:** built-in\ 4 | **Procedure:** DailyRollingPrintAppender 5 | 6 | | Property | Value | Comments | 7 | |:------------|:----------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 8 | | outQ | output-queue-name | Name of the output queue. | 9 | | splfName | spool-file-name | Name of the printer file. | 10 | | usrdta | user-data | User data of the printer file. | 11 | | length | page-length | Page length measured in lines. | 12 | | width | page-widht | Page width measured in characters. | 13 | | lpi | 6, 8 | Lines per inch. | 14 | | cpi | 10, 12 | Charcters per inch. | 15 | | ovrflw | overflow-line-number | Page overflow line. | 16 | | leftMargin | left-margin | Left margin measured in characters. | 17 | | rightMargin | right-margin | Right margin measured in characters. | 18 | | datePattern | datePattern | Pattern used to test, if a new file has to be started:
dd - Days
MM - Months
yyyy - Years
mm - Minutes
HH - Hours | 19 | | layout | layout-name | Name of the layout used to format the log events: `LIB/SRVPGM(ProcedurePrefix)`.
The built-in layouts can be specified by the following short cuts:
- PatternLayout
- SimpleLayout
- XMLLayout | 20 | 21 | *** 22 | © 2000-2025, Thomas Raddatz 23 | -------------------------------------------------------------------------------- /documentation/appender/Appender___NullAppender.md: -------------------------------------------------------------------------------- 1 | # NullAppender 2 | 3 | **Service program:** built-in\ 4 | **Procedure:** NullAppender 5 | 6 | | Property | Value | Comments | 7 | |:-------------|:----------|:------------| 8 | | none | | | 9 | 10 | *** 11 | © 2000-2025, Thomas Raddatz 12 | -------------------------------------------------------------------------------- /documentation/appender/Appender___RollingFileAppender.md: -------------------------------------------------------------------------------- 1 | # RollingFileAppender 2 | 3 | **Service program:** LOG4RLFAPP\ 4 | **Procedure:** RollingFileAppender 5 | 6 | | Property | Wert | Bemerkung | 7 | |:---------------|:---------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 8 | | path | path-name | Name of the IFS file | 9 | | ccsid | ccsid-value | CCSID used to create new the log files.
Default: 850 | 10 | | share | true \| false
or 1 \| 0 | Specifies whether to share the log file for writing with other jobs or not.
Default: `false` | 11 | | syncObj | library/objName | Specifies a data area that is used to synchronize changing the log file. This properties is used only if `share` is set to 'true'.<>Default: `QGPL/LOG4RLFAPP` | 12 | | syncLogMode | true \| false
or 1 \| 0 | Specifies whether the data area is updated with the name of the job holding the synchronisation lock. This properties is used only if `share` is set to 'true'.
Default: `false` | 13 | | syncText | object-description | Object description of the data area that is used as the synchronisation object. This properties is used only if 'share' is set to `true`. | 14 | | maxFileSize | file-size | Specifies the maximum size of the log file. When the log file reaches the maximum size it is rolled over to the backup files.
Default: 10 MB | 15 | | maxBackupIndex | index-value | Specifies the number of backup files. If the number of backup files is equal to 0, no backup files are created and the log file gets truncated.
Default: 1 | 16 | | filter | filter-name | Name of the filter to use. | 17 | | layout | layout-name | Name of the layout used to format the log events: `LIB/SRVPGM(ProcedurePrefix)`.
The built-in layouts can be specified by the following short cuts:
- PatternLayout
-SimpleLayout
- XMLLayout | 18 | | writeHeader | true \| false
or 1 \| 0 | Specifies whether layout header data is appended or not. | 19 | | writeFooter | true \| false
or 1 \| 0 | Specifies whether layout footer data is appended or not. | 20 | 21 | **Logik der Backup Dateien:** 22 | 23 | Backup files get the name 'file.index' where 'file' is the name of the log file. When file reaches the maximum size, the following actions take place: 24 | 25 | If 'file.maxBackupIndex' exists it is deleted. 26 | 27 | All backup files from 'file.maxBackupIndex-1' to file.1' are renamed to index + 1. 28 | 29 | The current log file is renamed to 'file.1'. 30 | 31 | A new log file is started. 32 | 33 | Example: 34 | 35 | log4rpg.log (current log file) 36 | 37 | Backup files: 38 | 39 | log4rpg.log.1 40 | 41 | log4rpg.log.2 42 | 43 | log4rpg.log.3 44 | 45 | ... 46 | 47 | log4rpg.log.maxBackupIndex 48 | 49 | ## Additional Information 50 | 51 | The RollingFileAppender calls `Layout_getHeader()` and `Layout_getFooter()`. 52 | 53 | *** 54 | © 2000-2025, Thomas Raddatz 55 | -------------------------------------------------------------------------------- /documentation/appender/Appender___XMLSocketAppender.md: -------------------------------------------------------------------------------- 1 | # XMLSocketAppender 2 | 3 | **Service program:** LOG4SCKAPP 4 | **Procedure:** XMLSocketAppender 5 | 6 | | Property | Value | Comments | 7 | |:------------------|:-------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 8 | | remoteHost | host-address | Host name or IP-Address. Special value `localclient` that resolves to the TCP/IP address of the 5250 client of the current job. | 9 | | port | port | Number of the port to connect to. | 10 | | ccsid | ccsid-value | The CCSID that is used to send the log events to the destination address. | 11 | | filter | filter-name | Name of the filter to use. | 12 | | layout | layout-name | Name of the layout used to format the log events: `LIB/SRVPGM(ProcedurePrefix)`.
The built-in layouts can be specified by the following short cuts:
- PatternLayout
-SimpleLayout
- XMLLayout | 13 | | reconnectionDelay | wait-msecs | Reconnection delay time measured in milliseconds.
Default: 30.000 msecs. | 14 | | connectTimeout | wait_msecs | Timeout for establishing a new connection in milliseconds.
Default: 5.000 msecs. | 15 | 16 | The XMLSocketAppender can be used to send the log events to [Chainsaw](Chainsaw___Overview.md). 17 | 18 | ## Additional Information 19 | 20 | The `XMLSocketAppender` does not call the optional layout procedures `Layout_getHeader()` und `Layout_getFooter(). 21 | 22 | *** 23 | © 2000-2025, Thomas Raddatz 24 | -------------------------------------------------------------------------------- /documentation/appender/Appender___XMLSocketHubAppender.md: -------------------------------------------------------------------------------- 1 | # XMLSocketHubAppender 2 | 3 | **Service program:** LOG4SCKAPP\ 4 | **Procedure:** XMLSocketHubAppender 5 | 6 | | Property | Value | Comments | 7 | |:---------|:------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 8 | | port | port | Listener port number. Must be unique on the *IBM i*. | 9 | | ccsid | ccsid-value | CCSID used to create new the log files. Default: 850 | 10 | | layout | layout-name | Name of the layout used to format the log events: `LIB/SRVPGM(ProcedurePrefix)`.
The built-in layouts can be specified by the following short cuts:
- PatternLayout
- SimpleLayout
- XMLLayout | 11 | 12 | The XMLSocketAppender can be used to send the log events to [Chainsaw](Chainsaw___Overview.md>). In contrast to the [XMLSocketAppender]( `XMLSocketHubAppender (LOG4SHBAPP)` --> `XMLSocketHubAppender (LOG4SHBAPC)` -> *Chainsaw* application running on a PC 19 | 20 | ## Additional Information 21 | 22 | The `XMLSockerHubAppender` acts as a server and hence each `XMLSockerHubAppender` must have its own listener port. 23 | 24 | *** 25 | © 2000-2025, Thomas Raddatz 26 | -------------------------------------------------------------------------------- /documentation/appender/reference/Appender_new___Create_appender.md: -------------------------------------------------------------------------------- 1 | # Appender_new - Create appender 2 | 3 | Produces a new Appender and returns a value of type **LOG4RPG_pAppender_t**. 4 | 5 | ## Syntax 6 | 7 | **Appender_new**(***i_appName***, ***i_appImpl***, {­***i_pPropString***) 8 | 9 | The syntax of **Appender_new**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:--------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------| 13 | | ***i_appName*** | Required. Name of the appender of type **LOG4RPG_appenderName_t**. | 14 | | ***i_appImpl*** | Required. Qualified name of the class that implements the appender of type **LOG4RPG_implClass_t**.
Example: `*LIBL/LOG4RLFAPP(RollingFileAppender)` | 15 | | ***i_pPropString*** | Optional or omissible. Semicolon separated liest of configuration properties of type **STRING**. | 16 | 17 | ## Return Value 18 | 19 | | Name | Description | 20 | |:---------------------|-----------------------------------------------------------| 21 | | ***pAppender*** | Handle of the appender of type **LOG4RPG_pAppender_t**. | 22 | 23 | ## Comments 24 | 25 | none 26 | 27 | ## Module 28 | 29 | LOG3RPG03 30 | 31 | *** 32 | © 2000-2025, Thomas Raddatz 33 | -------------------------------------------------------------------------------- /documentation/appender/reference/Appender_setFilter___Set_filter_for_appender.md: -------------------------------------------------------------------------------- 1 | # Appender_setFilter - Set filter for appender 2 | 3 | Assigns a filter to a given appender and returns a value of type **BOOL**. 4 | 5 | ## Syntax 6 | 7 | **Appender_setFilter**(***i_pAppender***, ***i_pFilter***) 8 | 9 | The syntax of **Appender_setFilter**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:--------------------|:------------------------------------------------------------------| 13 | | ***i_pAppender*** | Required. Handle of the appender of type **LOG4RPG_pAppender_t**. | 14 | | ***i_pFilter*** | Required. Handle of the filter of type **LOG4RPG_pFilter_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | ***isSet*** | Returns `*ON` on success, else `*OFF`. | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG03 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/appender/reference/Appender_setLayout___Set_layout_for_appender.md: -------------------------------------------------------------------------------- 1 | # Appender_setLayout - Set layout for appender 2 | 3 | Assigns a layout to a given appender and returns a value of type **BOOL**. 4 | 5 | ## Syntax 6 | 7 | **Appender_setLayout**(***i_pAppender***, ***i_pLayout***) 8 | 9 | The syntax of **Appender_setLayout**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:-------------------------------------------------------------------| 13 | | ***i_pAppender*** | Required. Handle of the appender of type **LOG4RPG_pAppender _t**. | 14 | | ***i_pLayout*** | Required. Handle of the layout of type **LOG4RPG_pLayout_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | ***isSet*** | Returns `*ON` on success, else `*OFF`. | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG03 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/chainsaw/Chainsaw___Installation.md: -------------------------------------------------------------------------------- 1 | # Chainsaw - Installation 2 | 3 | First of all make sure to have a **Java 11** installed, because *Chainsaw 2.1* does not run with *Java 8* or *Java 17*. 4 | 5 | Then download **download** the `apache-chainsaw-2.1.0-standalone.zip` package from the [Apache Chainsaw](https://logging.apache.org/chainsaw/2.x/) homepage. 6 | 7 | Unzip the content of the zip file into a directory of your choice, for example `c:\Program Files\Chainsaw`. Now *Chainsaw* can be launched with `chainsaw.bat`. 8 | 9 | ## Additions 10 | 11 | ### Details Panel Layout 12 | 13 | The following layouts have been changed for RPG. You can assign it to the details panel once you have some log events: 14 | 15 | [Left Aligned](assets/detail-panel-custom-layout-left-aligned.html) 16 | ![Image](assets/detail-panel-left-aligned.png) 17 | 18 | [Right Aligned](assets/detail-panel-custom-layout-right-aligned.html) 19 | ![Image](assets/detail-panel-right-aligned.png) 20 | 21 | [Original Layout](assets/detail-panel-original-layout.html) 22 | ![Image](assets/detail-panel-original-layout.png) 23 | 24 | ### XMLSocketHubReceiver 25 | 26 | Optionally add the [XMLSocketHubReceiver.jar](assets/XMLSocketHubReceiver.jar) to the *Chainsaw* classpath. The `XMLSocketHubReceiver` enables *Chainsaw* to connect to a [XMLSocketHubAppender](appender/Appender___XMLSocketHubAppender.md) of *Log4rpg*. 27 | 28 | *** 29 | © 2000-2025, Thomas Raddatz 30 | -------------------------------------------------------------------------------- /documentation/chainsaw/Chainsaw___Overview.md: -------------------------------------------------------------------------------- 1 | # Chainsaw - Overview 2 | 3 | *Chainsaw* is a GUI utility to let you view and analyze your log entries. It is part of the *Apache* [Logging services](https://logging.apache.org/chainsaw/2.x/) project. 4 | 5 | *Chainsaw* dramatically eases digging into log events. It can use different colors for the different log levels. It lets you filter the log events. It can put a focus on the log events of a logger or ignore events. But the very best thing of Chainsaw is its capability to receive log events from remote systems via TCP/IP connections. 6 | 7 | ![Image](assets/chainsaw-xml-receiver.png) 8 | 9 | The image above shows the log event details panel formatted with the default configuration of *Chainsaw*. The default configuration is not the best for to RPG. 10 | 11 | Refer to [Chainsaw Installation](Chainsaw___Installation.md) for alternatives. 12 | 13 | ## See Also 14 | 15 | - [Chainsaw - Installation](Chainsaw___Installation.md#details_panel_layout) 16 | - [Chainsaw - Settings files](Chainsaw___Settings_files.md) 17 | 18 | *** 19 | © 2000-2025, Thomas Raddatz 20 | -------------------------------------------------------------------------------- /documentation/chainsaw/Chainsaw___Settings_files.md: -------------------------------------------------------------------------------- 1 | # Chainsaw - Settings files 2 | 3 | *Chainsaw* uses various settings files to store its status. It uses the `.chainsaw` directory in the user's home directory. On *Windows* PCs the user home directory is called `c:\Users\user_name`. There are three types of settings files per tab. Each settings file starts with the name of the tab. For example: 4 | 5 | - chainsaw-myApplication.colors 6 | 7 | - chainsaw-myApplication.properties 8 | 9 | - chainsaw-myApplication.xml 10 | 11 | By default the tab name is defined as `PROP.hostname - PROP.application`. This value can be changed on the **Application-wide Preferences** page. 12 | 13 | *** 14 | © 2000-2025, Thomas Raddatz 15 | -------------------------------------------------------------------------------- /documentation/chainsaw/assets/XMLSocketHubReceiver.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/chainsaw/assets/XMLSocketHubReceiver.jar -------------------------------------------------------------------------------- /documentation/chainsaw/assets/chainsaw-xml-receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/chainsaw/assets/chainsaw-xml-receiver.png -------------------------------------------------------------------------------- /documentation/chainsaw/assets/detail-panel-custom-layout-left-aligned.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
Level%p
Logger%c
Message
%m
Method%M
Line%L

Time%d
Thread%t
Pgm / Module%C / %F
Properties
%properties
25 | 26 | -------------------------------------------------------------------------------- /documentation/chainsaw/assets/detail-panel-custom-layout-right-aligned.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
Level%p
Logger%c
Message
%m
Method%M
Line%L

Time%d
Thread%t
Pgm / Module%C / %F
Properties
%properties
25 | 26 | -------------------------------------------------------------------------------- /documentation/chainsaw/assets/detail-panel-left-aligned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/chainsaw/assets/detail-panel-left-aligned.png -------------------------------------------------------------------------------- /documentation/chainsaw/assets/detail-panel-original-layout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Level%p
Logger%c
Time%d (ms delta: %X{millisdelta})
Thread%t
Message%m
Marker%X{marker}
Throwable
%throwable
-------------------------------------------------------------------------------- /documentation/chainsaw/assets/detail-panel-original-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/chainsaw/assets/detail-panel-original-layout.png -------------------------------------------------------------------------------- /documentation/chainsaw/assets/detail-panel-right-aligned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/chainsaw/assets/detail-panel-right-aligned.png -------------------------------------------------------------------------------- /documentation/configuration/Configuration___DailyRollingFileAppender.md: -------------------------------------------------------------------------------- 1 | # Configuration - DailyRollingFileAppender 2 | 3 | This is an example configuration of a [DailyRollingFileAppender](appender/Appender___DailyRollingFileAppender.md). The appender uses a [PatternLayout](layout/Layout___PatternLayout.md) for rendering log events. The name of the log file is `log4rpg.log`. It is placed into the current directory. Usually this is the home directory, as specified in the user profile, parameter `HOMEDIR`. 4 | 5 | ## Configuration Data 6 | 7 | ```properties 8 | log4rpg.debug=off, printer 9 | 10 | log4rpg.rootLogger=DEBUG, file 11 | log4rpg.logger.de.tools400=INFO 12 | 13 | log4rpg.appender.file=DailyRollingFileAppender 14 | log4rpg.appender.file.path=log4rpg.log 15 | log4rpg.appender.file.layout=PatternLayout 16 | log4rpg.appender.file.layout.conversionPattern=%z \[%-5p\] %L/%P(%M).%F (%S) %m%n 17 | ``` 18 | 19 | ## Log Rotation 20 | 21 | **Attaching new log file evry minute:** 22 | 23 | ```properties 24 | log4rpg.appender.file.datePattern=-yyyy-MM-dd.HH.mm. 25 | ``` 26 | 27 | **Attaching new log file evry hour:** 28 | 29 | ```properties 30 | log4rpg.appender.file.datePattern=-yyyy-MM-dd.HH. 31 | ``` 32 | 33 | **Attaching new log file daily:** 34 | 35 | ```properties 36 | log4rpg.appender.file.datePattern=-yyyy-MM-dd. 37 | ``` 38 | 39 | *** 40 | © 2000-2025, Thomas Raddatz 41 | -------------------------------------------------------------------------------- /documentation/configuration/Configuration___DailyRollingPrintAppender.md: -------------------------------------------------------------------------------- 1 | # Configuration - DailyRollingPrintAppender 2 | 3 | This is a example configuration of a [**DailyRollingPrintAppender**](appender/Appender___DailyRollingPrintAppender.md>). The appender uses a [**PatternLayout**]( 50 | 51 | 52 | 53 | 54 | ``` 55 | 56 | The port number must match the port number specified in the `log4rpg.properties` file shown above. 57 | 58 | ### Load Configuration on Startup 59 | 60 | The configuration file can be specified when starting *Chainsaw* like this: 61 | 62 | ![Image](assets/chainsaw-specify-configuration-file-xml-socket-receiver.png) 63 | 64 | If this startup screen is not shown, please go to the **Application-wide Preferences** and clear the value of property **Auto Config URL**. 65 | 66 | ### Output 67 | 68 | ![Image](assets/chainsaw-socket-receiver.png) 69 | 70 | The image above shows the log event details panel formatted with the configuration loaded from file [detail-panel-custom-layout-left-aligned.html](../lib/detail-panel-custom-layout-left-aligned.html). 71 | 72 | *** 73 | © 2000-2025, Thomas Raddatz 74 | -------------------------------------------------------------------------------- /documentation/configuration/Configuration_of_a_logger_within_a_program.md: -------------------------------------------------------------------------------- 1 | # Programmatic Logger Configuration 2 | 3 | Usually Log4rpg is configured by a properties file, because it is the easiest and most flexible option. In rare circumstances it may be required to configure one or more loggers within a program. The following example configures a XMLSocketAppender for Chainsaw: 4 | 5 | ## Configuration Statements 6 | 7 | ```c 8 | dcl-s hLogger like(LOG4RPG_hLogger_t); 9 | dcl-s hLayout like(LOG4RPG_pLayout_t); 10 | dcl-s hAppender like(LOG4RPG_pAppender_t); 11 | dcl-s hFilter like(LOG4RPG_pFilter_t); 12 | 13 | Configurator_clearConfiguration(); 14 | 15 | hLogger = Logger_getLogger(i_logger); 16 | Logger_setLevel(g_hLogger: cLOG4RPG_LEVEL_DEBUG); 17 | 18 | hLayout = Layout_new('*LIBL/LOG4RPG(XMLLayout)'); 19 | 20 | hFilter = Filter_new('appName' 21 | : '*LIBL/LOG4PROFLT(PropertyFilter)' 22 | : 'property.application=myApplication'); 23 | 24 | hAppender = Appender_new('chainsaw' 25 | : '*LIBL/LOG4SCKAPP(XMLSocketAppender)' 26 | : 'remoteHost=xxx.xxx.xxx.xxx; port=4448;'); 27 | 28 | Appender_setLayout(hAppender: hLayout); 29 | Appender_setFilter(hAppender: hFilter); 30 | ``` 31 | 32 | *** 33 | © 2000-2025, Thomas Raddatz 34 | -------------------------------------------------------------------------------- /documentation/configuration/assets/XMLSocketHubReceiver-Config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /documentation/configuration/assets/XMLSocketReceiver-Config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /documentation/configuration/assets/chainsaw-socket-hub-receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/configuration/assets/chainsaw-socket-hub-receiver.png -------------------------------------------------------------------------------- /documentation/configuration/assets/chainsaw-socket-receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/configuration/assets/chainsaw-socket-receiver.png -------------------------------------------------------------------------------- /documentation/configuration/assets/chainsaw-specify-configuration-file-xml-socket-hub-receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/configuration/assets/chainsaw-specify-configuration-file-xml-socket-hub-receiver.png -------------------------------------------------------------------------------- /documentation/configuration/assets/chainsaw-specify-configuration-file-xml-socket-receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/configuration/assets/chainsaw-specify-configuration-file-xml-socket-receiver.png -------------------------------------------------------------------------------- /documentation/filter/Filter.md: -------------------------------------------------------------------------------- 1 | # Filter 2 | 3 | ## Description 4 | 5 | Filters are used to further analyse the log event in order to determine, whether the log event has to be logged or not. The result of a filter decision equals one of the following values: 6 | 7 | - cFILTER_ACCEPT 8 | 9 | - cFILTER_DENY 10 | 11 | - cFILTER_NEUTRAL 12 | 13 | Filter can be used to change the log event. For example the [PropertyFilter](Filter___PropertyFilter.md) is used to add properties to a log event. 14 | 15 | *Log4rpg* is shipped with one ready-to-go filter: 16 | 17 | - [PropertyFilter](Filter___PropertyFilter.md) 18 | 19 | Based on the shipped filter and with the help of your phantasy you can write filters for whatever purpose you need. 20 | 21 | Please refer to member `PFILTER` to get additinal information about writing filters. 22 | 23 | ## Configuration 24 | 25 | Filters are defined in the *Log4rpg* properties file. They are independant objects that can be added to appenders. A filter entry starts with `log4rpg.filter.` followed by an arbitrary name of the filter. The service program implementing the filter follows right after the equal sign. Example: 26 | 27 | ```properties 28 | log4rpg.filter.appName=*LIBL/LOG4PROFLT(PropertyFilter) 29 | ``` 30 | 31 | The filter properties are added like this: 32 | 33 | ```properties 34 | log4rpg.filter.appName.property.application=myApplication 35 | ``` 36 | 37 | ## API Reference 38 | 39 | - [Filter_new()](reference/Filter_new___Create_filter.md) 40 | - [Filter_setNext()](reference/Filter_setNext___Set_follow_up_filter.md) 41 | 42 | *** 43 | © 2000-2025, Thomas Raddatz 44 | -------------------------------------------------------------------------------- /documentation/filter/Filter___PropertyFilter.md: -------------------------------------------------------------------------------- 1 | # PropertyFilter 2 | 3 | Service program:    LOG4PROFLT\ 4 | Procedure:    PropertyFilter 5 | 6 | | **Property** | **Value** | ## Comments | 7 | |:---------|:------|:---------| 8 | | property | value | Defines an arbitrary property for the log event. A property is nothing more than a key/value pair. | 9 | 10 | PropertyFilter are used to add the "application" property to log events if the log events are send to [**Chainsaw**](Chainsaw___Overview.md). Chainsaw uses the "application" property together with the host name to determine which tab to use to present the log events. 11 | 12 | **Chainsaw example:** 13 | 14 | log4rpg.filter.appName=\*LIBL/LOG4PROFLT(PropertyFilter) 15 | 16 | log4rpg.filter.appName.property.application=myApplication 17 | 18 | *** 19 | © 2000-2025, Thomas Raddatz 20 | -------------------------------------------------------------------------------- /documentation/filter/reference/Filter_new___Create_filter.md: -------------------------------------------------------------------------------- 1 | # Filter_new - Create filter 2 | 3 | Produces a new filter and returns a value of type **LOG4RPG_pFilter_t**. 4 | 5 | ## Syntax 6 | 7 | **Filter_new**(***i_fltName***, ***i_fltImpl***, {­***i_pPropString***) 8 | 9 | The syntax of **Filter_new**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------| 13 | | ***i_fltName*** | Required. Name of the appender of type **LOG4RPG_filterName_t**. | 14 | | ***i_fltImpl*** | Required. Qualified name of the class that implements the filter of type **LOG4RPG_implClass_t**.
Example: `*LIBL/LOG4PROFLT(PropertyFilter)` | 15 | | ***i_pPropString*** | Optional or omissible. Semicolon separated liest of configuration properties of type **STRING**. | 16 | 17 | ## Return Value 18 | 19 | | Name | Description | 20 | |:---------------------|-----------------------------------------------------------| 21 | | ***pFilter*** | Handle of the filter of type **LOG4RPG_pFilter_t**. | 22 | 23 | ## Comments 24 | 25 | none 26 | 27 | ## Module 28 | 29 | LOG4RPG17 30 | 31 | *** 32 | © 2000-2025, Thomas Raddatz 33 | -------------------------------------------------------------------------------- /documentation/filter/reference/Filter_setNext___Set_follow_up_filter.md: -------------------------------------------------------------------------------- 1 | # Filter_setNext - Set follow-up filter for filter 2 | 3 | Assigns a follow-up filter to a given filter and returns a value of type **BOOL**. 4 | 5 | ## Syntax 6 | 7 | **Filter_setNext**(***i_pFilter***, ***i_pNextFilter***) 8 | 9 | The syntax of **Filter_setNext**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_pFilter*** | Required. Handle of the filter of type **LOG4RPG_pFilter_t**. | 14 | | ***i_pNextFilter*** | Required. Handle of the filter of type **LOG4RPG_pFilter_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | ***isSet*** | Returns `*ON` on success, else `*OFF`. | 21 | 22 | ## Comments 23 | 24 | You can use this procedure to create a chain of filters. The filter are called one after another before the appender appends the log event to the target. 25 | 26 | ## Module 27 | 28 | LOG4RPG17 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/layout/Layout.md: -------------------------------------------------------------------------------- 1 | # Layout 2 | 3 | Appender work hand in hand with layouts. While the task of an appender is to append the log event to a logging target, layouts format the log event. 4 | 5 | Of course it is not required that an appender uses a layout. It that case it appends the raw text to the logging target. 6 | 7 | *Log4rpg* is shipped with the following ready-to-go layouts: 8 | 9 | - [HTMLLayout](./Layout___HTMLLayout.md) 10 | 11 | - [PatternLayout](./Layout___PatternLayout.md) 12 | 13 | - [SimpleLayout](./Layout___SimpleLayout.md) 14 | 15 | - [XMLLayout](./Layout___XMLLayout.md) 16 | 17 | Based on the shipped layouts and with the help of your phantasy you can write layouts for whatever purpose you need. 18 | 19 | Please refer to member `PLAYOUT` to get additinal information about writing layouts. 20 | 21 | ## Configuration 22 | 23 | Layouts are defined in the *Log4rpg* properties file. They are part of an appender. A layout entry starts with `log4rpg.appender.[appender_name].layout.` followed by an arbitrary name of the layout. The service program implementing the layout follows right after the equal sign. Example: 24 | 25 | ```properties 26 | log4rpg.appender.file.layout=PatternLayout 27 | ``` 28 | 29 | The layout properties are added like this: 30 | 31 | ```properties 32 | log4rpg.appender.file.layout.conversionPattern=%z [%-5p] %L/%P(%M).%F (%S) %m%n 33 | ``` 34 | 35 | ## API Reference 36 | 37 | - [Layout_new()](reference/Layout_new___Create_layout.md) 38 | 39 | *** 40 | © 2000-2025, Thomas Raddatz 41 | -------------------------------------------------------------------------------- /documentation/layout/Layout___HTMLLayout.md: -------------------------------------------------------------------------------- 1 | # HTMLLayout 2 | 3 | **Service program:** LOG4HTMLAY\ 4 | **Procedure:** HTMLLayout 5 | 6 | | Property | Value | Comments | 7 | |:---------|:------|:---------| 8 | | none | | | 9 | 10 | ## Additional Information 11 | 12 | The HTMLLayout exports the following procedures: 13 | 14 | - `HTMLLayout_getHeader()` 15 | - `HTMLLayout_getFooter()` 16 | 17 | These procedures are called by certain appenders, e.g. 18 | 19 | - [RollingFileAppender](../appender/Appender___RollingFileAppender.md) 20 | - [DailyRollingFileAppender](../appender/Appender___DailyRollingFileAppender.md) 21 | 22 | You may override these procedures in your own HTML layouts. 23 | 24 | ## Output 25 | 26 | ![Image](assets/output-html-layout.png) 27 | 28 | *** 29 | © 2000-2025, Thomas Raddatz 30 | -------------------------------------------------------------------------------- /documentation/layout/Layout___PatternLayout.md: -------------------------------------------------------------------------------- 1 | # PatternLayout 2 | 3 | **Service program:** built-in 4 | **Procedure:** PatternLayout 5 | 6 | | Property | Value | Comments | 7 | |:------------------|:--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 8 | | conversionPattern | pattern | Pattern specifying the layout:
%p - priority
%t - time
%d - date
%z - timestamp
%l - logger name
%m - log message
%n - new line
%P - program name
%L - library name (slow!)
%M - module name
%F - procedure name
%S - statement number
%j - qualified job name
%u - user name
%U - current user name | 9 | | timestampPattern | pattern | Pattern specifying the layout:
%Y - 4-digit year
%d - month
%d - day of week
%H - Hour in 24-hour format [00-23]
%I - Hour in 12-hour format [01-12]
%M - Minute
%S - Second
%ms - microseconds
The complete list of possible patterns can be found in the documentation of the `strftime()` function. | 10 | 11 | `%L` is slow, because of the Retrieve Call Stack (QWVRCSTK) API beeing slow. All other information can be gathered by sending and retrieving a message to the call stack entry that issued the log statement. 12 | 13 | `%ms` the default is a 6-digit microsecond value. The number of digits (1-6) can be appended to `%ms`. For example: `%ms3` produces a 3-digit microsecond value. 14 | 15 | ## Output 16 | 17 | ![Image](assets/output-pattern-layout.png) 18 | 19 | *** 20 | © 2000-2025, Thomas Raddatz 21 | -------------------------------------------------------------------------------- /documentation/layout/Layout___SimpleLayout.md: -------------------------------------------------------------------------------- 1 | # SimpleLayout 2 | 3 | **Service program:** built-in 4 | **Procedure:** SimpleLayout 5 | 6 | | Property | Value | Comments | 7 | |:---------|:------|:---------| 8 | | none | | | 9 | 10 | ## Output 11 | 12 | ![Image](assets/output-simple-layout.png) 13 | 14 | *** 15 | © 2000-2025, Thomas Raddatz 16 | -------------------------------------------------------------------------------- /documentation/layout/Layout___XMLLayout.md: -------------------------------------------------------------------------------- 1 | # XMLLayout 2 | 3 | **Service program:** built-in 4 | **Procedure:** XMLLayout 5 | 6 | | Property | Value | | 7 | |:-----------------------------|:---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------| 8 | | replaceUnprintableCharacters | true \| false
or 1 \| 0 | Specifies whether unprintable characters must be replaced or not. Characters with a hex code lower x'40' or greater x'FE' are considered to be unprintable. Usually you should set the property to `false` for better performance. | 9 | | substitutionCharacter | zeichen | Substitution chracater for unprintable characters.
Default: `÷` | 10 | | encoding | encoding-string | Specifies the [encoding](popup_xmlEncoding_t.md) attribute of the document declaration node. | 11 | 12 | The XMLLayout formats the log statements according to the rules established by Chainsaw utility of the Apache project. The output matches the rules specified in log4j.dtd. 13 | 14 | Because Log4rpg is for RPG it can not know about Java classes, methods and files in the sense of object oriented programming. However it is possible to map the following RPG items to Java like this: 15 | 16 | | Java terminology | RPG terminology | 17 | |:-----------------|:--------------------------| 18 | | file | module | 19 | | class | program / service program | 20 | | method | procedure | 21 | | thread | qualified job name | 22 | 23 | ## Output 24 | 25 | ![Image](assets/output-xml-layout_with_default_settings.png) 26 | 27 | The image above shows the output formatted with the default *Chainsaw* settings. 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/layout/assets/output-html-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/layout/assets/output-html-layout.png -------------------------------------------------------------------------------- /documentation/layout/assets/output-pattern-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/layout/assets/output-pattern-layout.png -------------------------------------------------------------------------------- /documentation/layout/assets/output-simple-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/layout/assets/output-simple-layout.png -------------------------------------------------------------------------------- /documentation/layout/assets/output-xml-layout_with_default_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tools400/log4rpg/df2f03b035fa6b2dffd6bda2c7788f78d56d6724/documentation/layout/assets/output-xml-layout_with_default_settings.png -------------------------------------------------------------------------------- /documentation/layout/popup_xmlEncoding_t.md: -------------------------------------------------------------------------------- 1 | # popup_xmlEncoding_t 2 | 3 | | Encoding | Value | 4 | |:-----------|:------| 5 | | UTF-8 | 1208 | 6 | | UTF-16 | 1200 | 7 | | ISO-8859-1 | 819 | 8 | 9 | *** 10 | © 2000-2025, Thomas Raddatz 11 | -------------------------------------------------------------------------------- /documentation/layout/reference/Layout_new___Create_layout.md: -------------------------------------------------------------------------------- 1 | # Layout_new - Create layout 2 | 3 | Produces a new layout and returns a value of type **LOG4RPG_pLayout_t** zurück. 4 | 5 | ## Syntax 6 | 7 | **Layout_new**(***i_layoutImpl***, {­***i_pPropString***) 8 | 9 | The syntax of **Layout_new**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:---------------------------------------------------------------------------------------------------------------------------------------------| 13 | | ***i_layoutImpl*** | Required. Qualified name of the class that implements the layout of type **LOG4RPG_implClass_t**.
Example: `*LIBL/LOG4HTMLAY(HTMLLayout)` | 14 | | ***i_pPropString*** | Optional or omissible. Semicolon separated liest of configuration properties of type **STRING**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | ***pLayout*** | Handle of the layout of type **LOG4RPG_pLayout_t**. | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG11 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Configurator_clearConfiguration_.md: -------------------------------------------------------------------------------- 1 | # Configurator_clearConfiguration - Clear Config Data 2 | 3 | Clears all configuration data. 4 | 5 | ## Module 6 | 7 | LOG4RPG01 8 | 9 | ## Syntax 10 | 11 | **Configurator_clearConfiguration**() 12 | 13 | The syntax of **Configurator_clearConfiguration**-procedure uses the following parameters: 14 | 15 | | Parameter | Description | 16 | |:---------------------|:----------------------------------------------------------| 17 | | none | | 18 | 19 | ## Return Value 20 | 21 | | Name | Description | 22 | |:---------------------|-----------------------------------------------------------| 23 | | none | | 24 | 25 | ## Comments 26 | 27 | none 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Configurator_loadAndWatchPropert.md: -------------------------------------------------------------------------------- 1 | # Configurator_loadAndWatchPropertiesConfiguration - Load property configuration 2 | 3 | Loads the configuration data from a properties file and returns a value of type **BOOL**. Watches the configuration file for changes and reloads configuration on changges. 4 | 5 | ## Syntax 6 | 7 | **Configurator_loadAndWatchPropertiesConfiguration**(***i_URL***, {­***i_waitTime***, {­***i_unit***) 8 | 9 | The syntax of **Configurator_loadAndWatchPropertiesConfiguration**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------| 13 | | ***i_URL*** | Required. URL of the properties file of type **LOG4RPG_path_t**. | 14 | | ***i_waitTime*** | Optional. Time to wait until to check the configuration file for changes of type **INTEGER**.
Default: **cLOG4RPG_CONFIGURATION_DEFAULT_RELOAD_DELAY** (1 minute) | 15 | | ***i_unit*** | Optional. [Unit](popup_time_unit.md) of ***i_waitTime*** of type **STRING**.
Default: **cLOG4RPG_CONFIGURATION_DEFAULT_RELOAD_DELAY_UNIT** (*MINUTE) | 16 | 17 | ## Return Value 18 | 19 | | Name | Description | 20 | |:---------------------|---------------------------------------------| 21 | | ***isConfigured*** | Returns `*ON` on success, otherwise `*OFF`. | 22 | 23 | ## Comments 24 | 25 | Valid URLs are: 26 | 27 | - file: - URL of an IFS file. 28 | 29 | - mbr: - URL of a file member. 30 | 31 | Examples: 32 | 33 | ```text 34 | file:log4rpg.properties 35 | 36 | file:/home/qsysopr/log4rpg.properties 37 | 38 | mbr:QLOG4RPG.PROPS1 39 | 40 | mbr:*LIBL/QLOG4RPG.PROPS1 41 | 42 | mbr:*SEARCH/QLOG4RPG.PROPS1 43 | ``` 44 | 45 | `*SEARCH` searches all libraries of the library list for the specified file and member. 46 | 47 | ## Module 48 | 49 | LOG4RPG01 50 | 51 | *** 52 | © 2000-2025, Thomas Raddatz 53 | -------------------------------------------------------------------------------- /documentation/reference/Configurator_loadDefaultConfiguration.md: -------------------------------------------------------------------------------- 1 | # Configurator_loadDefaultConfiguration - Load default configuration 2 | 3 | Loads the default configuration data and returns a value of type **BOOL**. 4 | 5 | ## Syntax 6 | 7 | **Configurator_loadDefaultConfiguration**() 8 | 9 | The syntax of **Configurator_loadDefaultConfiguration**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:-----------------------| 13 | | none | | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------| 19 | | ***isConfigured*** | Returns `*ON` on success, otherwise `*OFF`. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Configurator_loadPropertiesConfiguration.md: -------------------------------------------------------------------------------- 1 | # Configurator_loadPropertiesConfiguration - Load property configuration 2 | 3 | Loads the configuration data from a properties file and returns a value of type **BOOL**. 4 | 5 | ## Syntax 6 | 7 | **Configurator_loadPropertiesConfiguration**(***i_URL***) 8 | 9 | The syntax of **Configurator_loadPropertiesConfiguration**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------| 13 | | ***i_URL*** | Required. URL of the properties file of type **LOG4RPG_path_t**. | 14 | | | | 15 | | | | 16 | 17 | ## Return Value 18 | 19 | | Name | Description | 20 | |:---------------------|-----------------------------------------------------------| 21 | | ***isConfigured*** | Returns `*ON` on success, otherwise `*OFF`. | 22 | 23 | ## Comments 24 | 25 | Valid URLs are: 26 | 27 | - file: - URL of an IFS file. 28 | 29 | - mbr: - URL of a file member. 30 | 31 | Examples: 32 | 33 | ```text 34 | file:log4rpg.properties 35 | 36 | file:/home/qsysopr/log4rpg.properties 37 | 38 | mbr:QLOG4RPG.PROPS1 39 | 40 | mbr:*LIBL/QLOG4RPG.PROPS1 41 | 42 | mbr:*SEARCH/QLOG4RPG.PROPS1 43 | ``` 44 | 45 | `*SEARCH` searches all libraries of the library list for the specified file and member. 46 | 47 | ## Module 48 | 49 | LOG4RPG01 50 | 51 | *** 52 | © 2000-2025, Thomas Raddatz 53 | -------------------------------------------------------------------------------- /documentation/reference/Logger_addAppender___Add_appender.md: -------------------------------------------------------------------------------- 1 | # Logger_addAppender - Add appender 2 | 3 | Adds a given appender to a given logger. 4 | 5 | ## Syntax 6 | 7 | **Logger_addAppender**(***i_hLogger***, ***i_pAppender***) 8 | 9 | The syntax of **Logger_addAppender**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:------------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_pAppender*** | Required. Handle of the appender of type **LOG4RPG_pAppender_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_debugMsg___Log_DEBUG_message.md: -------------------------------------------------------------------------------- 1 | # Logger_debugMsg - Log DEBUG message 2 | 3 | Appends a DEBUG message to the log. 4 | 5 | ## Syntax 6 | 7 | **Logger_debugMsg**(***i_hLogger***, ***i_msg***) 8 | 9 | The syntax of **Logger_debugMsg**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_msg*** | Required. Statement to log of type **LOG4RPG_msg_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_debug___Log_DEBUG_statement.md: -------------------------------------------------------------------------------- 1 | # Logger_debug - Log DEBUG statement 2 | 3 | Appends a DEBUG statement to the log. 4 | 5 | ## Syntax 6 | 7 | **Logger_debug**(***i_hLogger***, ***i_text***) 8 | 9 | The syntax of **Logger_debug**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_text*** | Required. Statement to log of type **LOG4RPG_text_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_errorMsg___Log_ERROR_message.md: -------------------------------------------------------------------------------- 1 | # Logger_errorMsg - Log ERROR message 2 | 3 | Appends an ERROR message to the log. 4 | 5 | ## Syntax 6 | 7 | **Logger_errorMsg**(***i_hLogger***, ***i_msg***) 8 | 9 | The syntax of **Logger_errorMsg**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_msg*** | Required. Statement to log of type **LOG4RPG_*msg*_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_error___Log_ERROR_statement.md: -------------------------------------------------------------------------------- 1 | # Logger_error - Log ERROR statement 2 | 3 | Appends an ERROR statement to the log. 4 | 5 | ## Syntax 6 | 7 | **Logger_error**(***i_hLogger***, ***i_text***) 8 | 9 | The syntax of **Logger_error**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_text*** | Required. Statement to log of type **LOG4RPG_text_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_fatalMsg___Log_FATAL_message.md: -------------------------------------------------------------------------------- 1 | # Logger_fatalMsg - Log FATAL message 2 | 3 | Appends a FATAL message to the log. 4 | 5 | ## Syntax 6 | 7 | **Logger_fatalMsg**(***i_hLogger***, ***i_msg***) 8 | 9 | The syntax of **Logger_fatalMsg**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_msg*** | Required. Statement to log of type **LOG4RPG_*msg*_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_fatal___Log_FATAL_statement.md: -------------------------------------------------------------------------------- 1 | # Logger_fatal - Log FATAL statement 2 | 3 | Appends a FATAL statement to the log. 4 | 5 | ## Syntax 6 | 7 | **Logger_fatal**(***i_hLogger***, ***i_text***) 8 | 9 | The syntax of **Logger_fatal**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_text*** | Required. Statement to log of type **LOG4RPG_text_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_forcedLogMsg___Log_message.md: -------------------------------------------------------------------------------- 1 | # Logger_forcedLogMsg - Log message 2 | 3 | Appends a message to the log regardless of the log level. 4 | 5 | ## Syntax 6 | 7 | **Logger_forcedLogMsg**(***i_hLogger***, ***i_level***, ***i_msg***) 8 | 9 | The syntax of **Logger_forcedLogMsg**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:----------------------------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_level*** | Required. **Log-Level**, associated to the Log Event of type **LOG4RPG_level_t**. | 15 | | ***i_msg*** | Required. Statement to log of type **LOG4RPG_*msg*_t**. | 16 | 17 | ## Return Value 18 | 19 | | Name | Description | 20 | |:---------------------|-----------------------------------------------------------| 21 | | none | | 22 | 23 | ## Comments 24 | 25 | none 26 | 27 | ## Module 28 | 29 | LOG4RPG01 30 | 31 | *** 32 | © 2000-2025, Thomas Raddatz 33 | -------------------------------------------------------------------------------- /documentation/reference/Logger_forcedLog___Log_statement.md: -------------------------------------------------------------------------------- 1 | # Logger_forcedLog - Log statement 2 | 3 | Appends a statement to the log regardless of the log level. 4 | 5 | ## Syntax 6 | 7 | **Logger_forcedLog**(***i_hLogger***, ***i_level***, ***i_text***) 8 | 9 | The syntax of **Logger_forcedLog**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:----------------------------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_level*** | Required. **Log-Level**, associated to the Log Event of type **LOG4RPG_level_t**. | 15 | | ***i_text*** | Required. Statement to log of type **LOG4RPG_text_t**. | 16 | 17 | ## Return Value 18 | 19 | | Name | Description | 20 | |:---------------------|-----------------------------------------------------------| 21 | | none | | 22 | 23 | ## Comments 24 | 25 | none 26 | 27 | ## Module 28 | 29 | LOG4RPG01 30 | 31 | *** 32 | © 2000-2025, Thomas Raddatz 33 | -------------------------------------------------------------------------------- /documentation/reference/Logger_getInternalDebugMode___Returns_the_mode_of_the_internal_debug_log.md: -------------------------------------------------------------------------------- 1 | # Logger_getInternalDebugMode - Returns the mode of the internal debug log 2 | 3 | Gets the current mode of the internal debug log and returns a value of type **LOG4RPG_debugMode_t**. 4 | 5 | ## Syntax 6 | 7 | **Logger_getInternalDebugMode**(***i_hLogger***) 8 | 9 | The syntax of **Logger_getInternalDebugMode**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------------| 19 | | ***debugMode*** | Mode of the internal debug lof of type **LOG4RPG_debugMode_t**. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_getInternalDebugOutput___Returns_the_output_target_of_the_internal_debug_log.md: -------------------------------------------------------------------------------- 1 | # Logger_getInternalDebugOutput - Returns the output target of the internal debug log 2 | 3 | Gets the current output target of the internal debug log and returns a value of type **LOG4RPG_debugOutput_t**. 4 | 5 | ## Syntax 6 | 7 | **Logger_getInternalDebugOutput**(***i_hLogger***) 8 | 9 | The syntax of **Logger_getInternalDebugOutput**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|----------------------------------------------------------------------------| 19 | | ***debugOutput*** | Output target of the internal debug lof of type **LOG4RPG_debugOutput_t**. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_getLogger___Get_logger_handle.md: -------------------------------------------------------------------------------- 1 | # Logger_getLogger - Get logger handle 2 | 3 | Retrieves a handle for a named logger and returns a value of type **LOG4RPG_hLogger_t**. 4 | 5 | ## Syntax 6 | 7 | **Logger_getLogger**(***i_logName***) 8 | 9 | The syntax of **Logger_getLogger**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:---------------------------------------------------------------| 13 | | ***i_logName*** | Required. Name of the logger of type **LOG4RPG_loggerName_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------| 19 | | ***hLogger*** | Handle of the logger of type **LOG4RPG_hLogger_t**. | 20 | 21 | ## Comments 22 | 23 | Wenn der Logger, dessen handle ermittelt werden soll, nicht existiert, wird er angelegt und einem entsprechenden Eltern Logger zugewiesen. 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_getName___Get_logger_Name.md: -------------------------------------------------------------------------------- 1 | # Logger_getName - Get logger name 2 | 3 | Retrieves the name of a given logger and returns a value of type **LOG4RPG_loggerName_t**. 4 | 5 | ## Syntax 6 | 7 | **Logger_getName**(***i_hLogger***) 8 | 9 | The syntax of **Logger_getName**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:------------------------------------------------------------- | 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------| 19 | | ***name*** | Name of the logger of type **LOG4RPG_loggerName_t**. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_getRootLogger___Get_root_logger.md: -------------------------------------------------------------------------------- 1 | # Logger_getRootLogger - Get root logger handle 2 | 3 | Ermittelt den Root Logger and returns a value of type **LOG4RPG_hLogger_t**. 4 | 5 | ## Syntax 6 | 7 | **Logger_getRootLogger**() 8 | 9 | The syntax of **Logger_getRootLogger**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:----------------------------------------------------------| 13 | | none | | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------| 19 | | ***hLogger*** | Handle of the root logger of type **LOG4RPG_hLogger_t**. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_infoMsg___Log_INFO_message.md: -------------------------------------------------------------------------------- 1 | # Logger_infoMsg - Log INFO message 2 | 3 | Appends an INFO message to the log. 4 | 5 | ## Syntax 6 | 7 | **Logger_infoMsg**(***i_hLogger***, ***i_msg***) 8 | 9 | The syntax of **Logger_infoMsg**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_msg*** | Required. Statement to log of type **LOG4RPG_msg_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_info___Log_INFO_statementent.md: -------------------------------------------------------------------------------- 1 | # Logger_info - Log INFO statement 2 | 3 | Appends a INFO statement to the log. 4 | 5 | ## Syntax 6 | 7 | **Logger_info**(***i_hLogger***, ***i_text***) 8 | 9 | The syntax of **Logger_info**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | | ***i_text*** | Required. Statement to log of type **LOG4RPG_text_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG3RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_isDebugEnabled___Checks__whether_log_level_DEBUG_is_enabled.md: -------------------------------------------------------------------------------- 1 | # Logger_isDebugEnabled - Checks, whether log level DEBUG is enabled 2 | 3 | Checks, whether or not log level DEBUG has been enabled. 4 | 5 | ## Syntax 6 | 7 | **Logger_isDebugEnabled**(***i_hLogger***) 8 | 9 | The syntax of **Logger_isDebugEnabled**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|------------------------------------------------------------------| 19 | | ***isEnabled*** | Returns `*ON` if log level `DEBUG` is enabled, otherwise `*OFF`. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_isErrorEnabled___Checks__whether_log_level_ERROR_is_enabled.md.md: -------------------------------------------------------------------------------- 1 | # Logger_isErrorEnabled - Checks, whether log level ERROR is enabled 2 | 3 | Checks, whether or not log level ERROR has been enabled. 4 | 5 | ## Syntax 6 | 7 | **Logger_isErrorEnabled**(***i_hLogger***) 8 | 9 | The syntax of **Logger_isErrorEnabled**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|------------------------------------------------------------------| 19 | | ***isEnabled*** | Returns `*ON` if log level `ERROR` is enabled, otherwise `*OFF`. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_isFatalEnabled___Checks__whether_log_level_FATAL_is_enabled.md.md: -------------------------------------------------------------------------------- 1 | # Logger_isFatalEnabled - Checks, whether log level FATAL is enabled 2 | 3 | Checks, whether or not log level FATAL has been enabled. 4 | 5 | ## Syntax 6 | 7 | **Logger_isFatalEnabled**(***i_hLogger***) 8 | 9 | The syntax of **Logger_isFatalEnabled**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|------------------------------------------------------------------| 19 | | ***isEnabled*** | Returns `*ON` if log level `FATAL` is enabled, otherwise `*OFF`. | 20 | 21 | ## Comments 22 | 23 | non 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_isInfoEnabled___Checks__whether_log_level_INFO_is_enabled.md.md: -------------------------------------------------------------------------------- 1 | # Logger_isInfoEnabled - Checks, whether log level INFO is enabled 2 | 3 | Checks, whether or not log level INFO has been enabled. 4 | 5 | ## Syntax 6 | 7 | **Logger_isInfoEnabled**(***i_hLogger***) 8 | 9 | The syntax of **Logger_isInfoEnabled**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------------| 19 | | ***isEnabled*** | Returns `*ON` if log level `INFO` is enabled, otherwise `*OFF`. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_isLogging___Returns_operating_mode_of_Log4rpg.md: -------------------------------------------------------------------------------- 1 | # Logger_isLogging - Returns operating mode of Log4rpg 2 | 3 | Returns the current operating mode of Log4rpg and returns a value of type **BOOL**. 4 | 5 | ## Syntax 6 | 7 | **Logger_isLogging**() 8 | 9 | The syntax of **Logger_isLogging**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:----------------------------------------------------------| 13 | | none | | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------| 19 | | ***isEnabled*** | Current operating mode of Log4rpg of type **BOOL**. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_isNull___Check_logger_han.md: -------------------------------------------------------------------------------- 1 | # Logger_isNull - Check logger handle for NULL value 2 | 3 | Test a logger handle for a NULL value and returns a value of type **BOOL**. 4 | 5 | ## Syntax 6 | 7 | **Logger_isNull**(***i_hLogger***, {­***i_char***) 8 | 9 | The syntax of **Logger_isNull**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:-------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_handle_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|------------------------------------------------------------------| 19 | | ***isNull*** | Returns `*ON`, when the logger handle is NULL, otherwise `*OFF`. | 20 | 21 | ## Comments 22 | 23 | Do not test a logger handle for a null value with the RPG special value \*NULL. Whenever you have to know whether a logger handle is NULL or not, use the **Logger_isNull**-procedure. 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_isWarnEnabled___Checks__whether_log_level_WARN_is_enabled.md.md: -------------------------------------------------------------------------------- 1 | # Logger_isWarnEnabled - Checks, whether log level WARN is enabled 2 | 3 | Checks, whether or not log level WARN has been enabled. 4 | 5 | ## Syntax 6 | 7 | **Logger_isWarnEnabled**(***i_hLogger***) 8 | 9 | The syntax of **Logger_isWarnEnabled**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_hLogger_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------------| 19 | | ***isEnabled*** | Returns `*ON` if log level `WARN` is enabled, otherwise `*OFF`. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_null___Produce_NULL_Handl.md: -------------------------------------------------------------------------------- 1 | # Logger_null - Produce NULL Handle 2 | 3 | Produces a logger NULL handle and returns a value of type **LOG4RPG_hLogger_t**. 4 | 5 | ## Syntax 6 | 7 | **Logger_null**() 8 | 9 | The syntax of **Logger_null**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|-----------------------------------------------------------| 13 | | none | | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------| 19 | | ***hLogger*** | Logger NULL handle. | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_removeAllAppenders___Remove_all_appender.md: -------------------------------------------------------------------------------- 1 | # Logger_removeAllAppenders - Remove all appenders 2 | 3 | Removes all appenders from a given logger. 4 | 5 | ## Syntax 6 | 7 | **Logger_removeAllAppenders**(***i_hLogger***) 8 | 9 | The syntax of **Logger_removeAllAppenders**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:-------------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_handle_t**. | 14 | 15 | ## Return Value 16 | 17 | | Name | Description | 18 | |:---------------------|-----------------------------------------------------------| 19 | | none | | 20 | 21 | ## Comments 22 | 23 | none 24 | 25 | ## Module 26 | 27 | LOG4RPG01 28 | 29 | *** 30 | © 2000-2025, Thomas Raddatz 31 | -------------------------------------------------------------------------------- /documentation/reference/Logger_removeAppender___Remove_appender.md: -------------------------------------------------------------------------------- 1 | # Logger_removeAppender - Remove appender (experimental) 2 | 3 | Removes a given appender from a given logger. 4 | 5 | ## Syntax 6 | 7 | **Logger_removeAppender**(***i_hLogger***, ***i_appName***) 8 | 9 | The syntax of **Logger_removeAppender**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:-------------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_handle_t**. | 14 | | ***i_appName*** | Required. Name of the appender of type **LOG4RPG_appenderName_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_setInternalDebugging___Enable_Disable_internal_log.md: -------------------------------------------------------------------------------- 1 | # Logger_setInternalDebugging - Enable/disable internal log 2 | 3 | Specifies the mode and output target of the internal log. 4 | 5 | ## Syntax 6 | 7 | **Logger_setInternalDebugging**(***i_debugMode***, ***i_output***) 8 | 9 | The syntax of **Logger_setInternalDebugging**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------| 13 | | ***i_debugMode*** | Required. Mode of the internal log of type **LOG4RPG_debugMode_t**.
cLOG4RPG_DEBUG_QUIET - no logging at all
cLOG4RPG_DEBUG_OFF - warnings and errors only
cLOG4RPG_DEBUG_ON - logs the program flow
cLOG4RPG_DEBUG_VERBOSE - logs each and everything | 14 | | ***i_output*** | Required. Output target of the internal log of type **LOG4RPG_debugOutput_t**.
cLOG4RPG_OUTPUT_PRINTER - write log events to a printer file
cLOG4RPG_OUTPUT_STDOUT - write log events to STDOUT | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_setLevel___Set_log_Level.md: -------------------------------------------------------------------------------- 1 | # Logger_setLevel - Set log level 2 | 3 | Specifies the log level for a given logger. 4 | 5 | ## Syntax 6 | 7 | **Logger_setLevel**(***i_hLogger***, ***i_level***) 8 | 9 | The syntax of **Logger_setLevel**-procedure uses the following parameters: 10 | 11 | | Parameter | Description | 12 | |:---------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------| 13 | | ***i_hLogger*** | Required. Handle of the logger of type **LOG4RPG_handle_t**. | 14 | | ***i_level*** | Required. Log level of type **LOG4RPG_level_t**. | 15 | 16 | ## Return Value 17 | 18 | | Name | Description | 19 | |:---------------------|-----------------------------------------------------------| 20 | | none | | 21 | 22 | ## Comments 23 | 24 | none 25 | 26 | ## Module 27 | 28 | LOG4RPG01 29 | 30 | *** 31 | © 2000-2025, Thomas Raddatz 32 | -------------------------------------------------------------------------------- /documentation/reference/Logger_setLogging___Enables__disables_Log4rpg.md: -------------------------------------------------------------------------------- 1 | # Logger_setLogging - Enables-/disables Log4rpg 2 | 3 | Siehe auch    Example    Info 4 | 5 | Enables/disables Log4rpg completely and returns a value of type **BOOL**. 6 | 7 | ## Syntax 8 | 9 | **Logger_setLogging**(***i_isEnabled***) 10 | 11 | The syntax of **Logger_setLogging**-procedure uses the following parameters: 12 | 13 | | Parameter | Description | 14 | |:---------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------| 15 | | | | 16 | | | | 17 | | | | 18 | 19 | ***i_isEnabled***    Required. Specifies whether to enable or disable Log4rpg of type **BOOL**. 20 | 21 | ## Return Value 22 | 23 | | Name | Description | 24 | |:---------------------|-----------------------------------------------------------| 25 | | | | 26 | 27 | 28 | ***isEnabled***    Current operating mode of Log4rpg of type **BOOL**. 29 | 30 | ## Comments 31 | 32 | *Log4rpg* ignores all function calls excepted [**Logger_null**](Logger_null___Produce_NULL_Handle.md>) and [**Logger_isNull**](