Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .abapgit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<DATA>
<MASTER_LANGUAGE>E</MASTER_LANGUAGE>
<STARTING_FOLDER>/src/</STARTING_FOLDER>
<FOLDER_LOGIC>PREFIX</FOLDER_LOGIC>
<FOLDER_LOGIC>FULL</FOLDER_LOGIC>
<IGNORE>
<item>/.gitignore</item>
<item>/LICENSE</item>
Expand Down
10 changes: 10 additions & 0 deletions src/zale_handler/package.devc.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DEVC" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DEVC>
<CTEXT>Package for diffrent handlers</CTEXT>
</DEVC>
</asx:values>
</asx:abap>
</abapGit>
33 changes: 33 additions & 0 deletions src/zale_handler/zcl_ale_gelf_tcp_handler.clas.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
CLASS zcl_ale_gelf_tcp_handler DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .

PUBLIC SECTION.
INTERFACES if_apc_wsp_event_handler.
DATA message TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.



CLASS zcl_ale_gelf_tcp_handler IMPLEMENTATION.
METHOD if_apc_wsp_event_handler~on_open.
ENDMETHOD.

METHOD if_apc_wsp_event_handler~on_message.
TRY.
message = i_message->get_text( ).
CATCH cx_apc_error INTO DATA(apc_error).
message = apc_error->get_text( ).
ENDTRY.
ENDMETHOD.

METHOD if_apc_wsp_event_handler~on_close.
message = 'Connection closed!'.
ENDMETHOD.

METHOD if_apc_wsp_event_handler~on_error.
ENDMETHOD.
ENDCLASS.
16 changes: 16 additions & 0 deletions src/zale_handler/zcl_ale_gelf_tcp_handler.clas.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ALE_GELF_TCP_HANDLER</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>Handler for gelf tcp connector</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>
118 changes: 118 additions & 0 deletions src/zcl_ale_log_connector_tcp_gelf.clas.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
CLASS zcl_ale_log_connector_tcp_gelf DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .

PUBLIC SECTION.

INTERFACES if_apc_wsp_event_handler.
INTERFACES if_apc_wsp_event_handler_base.
INTERFACES zif_ale_log_connector.

PROTECTED SECTION.
PRIVATE SECTION.

DATA terminator TYPE string VALUE `0A`.

METHODS create
IMPORTING host TYPE string
port TYPE string
RETURNING VALUE(gelf_client) TYPE REF TO if_apc_wsp_client.


ENDCLASS.



CLASS zcl_ale_log_connector_tcp_gelf IMPLEMENTATION.
METHOD zif_ale_log_connector~connect.


* DATA(gelf_url) = customizing->get_connector_url( ).


* DATA(msg) = `{ "version": "1.1", "host": "example.org", "short_message": "Abap schickt mich", "level": 5, "_some_info": "foo" }`.

DATA(client) = me->create( host = '192.168.0.165'
port = '12201' ).


TRY.
"Send mesasage from client
DATA(message_manager) = CAST if_apc_wsp_message_manager(
client->get_message_manager( ) ).


DATA(i) = 0.
DO 10 TIMES.

DATA(msg) = |\{| &&
|"version": "1.1",| &&
|"host": "{ sy-host }",| &&
|"short_message": "asd { i }",| &&
|"full_message": "asd",| &&
|"level": 5,| &&
|\}|.

DATA(message) = CAST if_apc_wsp_message( message_manager->create_message( ) ).

DATA(binary_msg) = cl_abap_codepage=>convert_to( msg ).
binary_msg = cl_abap_codepage=>convert_to( msg ).
DATA(binary_terminator) = CONV xstring( terminator ).
CONCATENATE binary_msg binary_terminator
INTO binary_msg IN BYTE MODE.
message->set_binary( binary_msg ).
message_manager->send( message ).


i = i + 1.
ENDDO.

CATCH cx_apc_error INTO DATA(error). " APC framework: Error handling class for ABAP Push Channel
cl_demo_output=>display( error->get_text( ) ).
ENDTRY.



ENDMETHOD.

METHOD create.

DATA(event_handler) = NEW zcl_ale_gelf_tcp_handler( ).

TRY.
gelf_client = cl_apc_tcp_client_manager=>create(
* i_protocol = 1
i_host = host
i_port = port
i_frame = VALUE apc_tcp_frame( frame_type = if_apc_tcp_frame_types=>co_frame_type_terminator
terminator = terminator )
i_event_handler = event_handler
* i_ssl_id = 'ANONYM'
).

gelf_client->connect( ).

CATCH cx_apc_error INTO DATA(error). " APC framework: Error handling class for ABAP Push Channel
cl_demo_output=>display( error->get_text( ) ).
ENDTRY.
ENDMETHOD.


METHOD if_apc_wsp_event_handler~on_close.
WRITE / 'asd'.
ENDMETHOD.

METHOD if_apc_wsp_event_handler~on_error.
WRITE / 'asd'.
ENDMETHOD.

METHOD if_apc_wsp_event_handler~on_message.
WRITE / 'asd'.
ENDMETHOD.

METHOD if_apc_wsp_event_handler~on_open.
WRITE / 'asd'.
ENDMETHOD.

ENDCLASS.
16 changes: 16 additions & 0 deletions src/zcl_ale_log_connector_tcp_gelf.clas.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ALE_LOG_CONNECTOR_TCP_GELF</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>Gelf tcp connector</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>