PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
_Kfe dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZmZdZdZe jddkreecZZneecZZe jdkrejZnejedd iZ ddlZn#e$r ddlmZYnwxYwejd ej dej!d ej"d ej#d iZ$dZ%Gddej&eZ'Gdde(Z)Gdde*Z+Gdde)Z,Gdde+Z-Gdde)Z.Gdde'eZ/Gdde'eZ0Gdd e0Z1Gd!d"e'Z2dS)#zILogging Handlers that send messages in Graylog Extended Log Format (GELF)N)DatagramHandler SocketHandlerii)rABCrceZdZdZ ddZdZdZedZed Z ed Z ed Z ed Z ed Z edZedZedZdS)BaseGELFHandlerzAbstract class defining the basic functionality of converting a :obj:`logging.LogRecord` into a GELF log. Provides the boilerplate for all GELF handlers defined within graypy.TFNctj|||_||_|r|rt d||_||_||_||_ ||_ dS)aInitialize the BaseGELFHandler :param debugging_fields: If :obj:`True` add debug fields from the log record into the GELF logs to be sent to Graylog. :type debugging_fields: bool :param extra_fields: If :obj:`True` add extra fields from the log record into the GELF logs to be sent to Graylog. :type extra_fields: bool :param fqdn: If :obj:`True` use the fully qualified domain name of localhost to populate the ``host`` GELF field. :type fqdn: bool :param localname: If specified and ``fqdn`` is :obj:`False`, use the specified hostname to populate the ``host`` GELF field. :type localname: str or None :param facility: If specified, replace the ``facility`` GELF field with the specified value. Also add a additional ``_logger`` GELF field containing the ``LogRecord.name``. :type facility: str :param level_names: If :obj:`True` use python logging error level name strings instead of syslog numerical values. :type level_names: bool :param compress: If :obj:`True` compress the GELF message before sending it to the Graylog server. :type compress: bool z8cannot specify 'fqdn' and 'localname' arguments togetherN) loggingHandler__init__debugging_fields extra_fields ValueErrorfqdn localnamefacility level_namescompress)selfrrrrrrrs A/opt/alt/python311/lib/python3.11/site-packages/graypy/handler.pyrzBaseGELFHandler.__init__9ssR   &&& 0(  YI YWXX X "  &  c||}||}|jrtj|n|}|S)aConvert a :class:`logging.LogRecord` into bytes representing a GELF log :param record: :class:`logging.LogRecord` to convert into a GELF log. :type record: logging.LogRecord :return: bytes representing a GELF log. :rtype: bytes )_make_gelf_dict_pack_gelf_dictrzlib)rrecord gelf_dictpackedpickles r makePicklezBaseGELFHandler.makePickleosJ((00 %%i00*.-Cv&&&V rcBd||j|j|jr|j|n||jt|j |j |j p|j d}| |||j r||||j |||j ||jr||||jr||||S)a&Create a dictionary representing a GELF log from a python :class:`logging.LogRecord` :param record: :class:`logging.LogRecord` to create a GELF log from. :type record: logging.LogRecord :return: Dictionary representing a GELF log. :rtype: dict z1.0)versionhost short_message timestamplevelr) _resolve_hostrr formatterformat getMessagecreated SYSLOG_LEVELSgetlevelnorname_add_full_messager_add_level_names_set_custom_facilityr_add_debugging_fieldsr_add_extra_fields)rr"r#s rrzBaseGELFHandler._make_gelf_dict~s#&&ty$.AA~%T^226:::""$$"&&v~v~FF 4    y&111   5  ! !)V 4 4 4 = $  % %i G G G   :  & &y& 9 9 9   6  " "9f 5 5 5rc>tj|j|d<dS)aAdd the ``level_name`` field to the ``gelf_dict`` which notes the logging level via the string error level names instead of numerical values :param gelf_dict: Dictionary representing a GELF log. :type gelf_dict: dict :param record: :class:`logging.LogRecord` to extract a logging level from to insert into the given ``gelf_dict``. :type record: logging.LogRecord level_nameN)r getLevelNamer4)r#r"s rr7z BaseGELFHandler._add_level_namess!#*"6v~"F"F ,rc@|||jddS)aYSet the ``gelf_dict``'s ``facility`` field to the specified value Also add a additional ``_logger`` field containing the ``LogRecord.name``. :param gelf_dict: Dictionary representing a GELF log. :type gelf_dict: dict :param facility_value: Value to set as the ``gelf_dict``'s ``facility`` field. :type facility_value: str :param record: :class:`logging.LogRecord` to extract it's record name to insert into the given ``gelf_dict`` as the ``_logger`` field. :type record: logging.LogRecord )r_loggerN)updater5)r#facility_valuer"s rr8z$BaseGELFHandler._set_custom_facilitys(& nMMNNNNNrcd}|jr&dtj|j}|jr|j}|r||d<dSdS)aAdd the ``full_message`` field to the ``gelf_dict`` if any traceback information exists within the logging record :param gelf_dict: Dictionary representing a GELF log. :type gelf_dict: dict :param record: :class:`logging.LogRecord` to extract a full logging message from to insert into the given ``gelf_dict``. :type record: logging.LogRecord N full_message)exc_infojoin tracebackformat_exceptionexc_text)r#r"rDs rr6z!BaseGELFHandler._add_full_messagesd ? S99Y%?%QRRL ? +!?L  5(4In % % % 5 5rcZ|rtjS||StjS)aResolve the ``host`` GELF field :param fqdn: Boolean indicating whether to use :meth:`socket.getfqdn` to obtain the ``host`` GELF field. :type fqdn: bool :param localname: Use specified hostname as the ``host`` GELF field. :type localname: str or None :return: String representing the ``host`` GELF field. :rtype: str )socketgetfqdn gethostname)rrs rr-zBaseGELFHandler._resolve_hosts5  >## #  " !###rc||j|j|j|j|jdt |dd}|||d<dSdS)aEAdd debugging fields to the given ``gelf_dict`` :param gelf_dict: Dictionary representing a GELF log. :type gelf_dict: dict :param record: :class:`logging.LogRecord` to extract debugging fields from to insert into the given ``gelf_dict``. :type record: logging.LogRecord )fileline _function_pid _thread_name processNameN _process_name)r@pathnamelinenofuncNameprocess threadNamegetattr)r#r"pns rr9z%BaseGELFHandler._add_debugging_fieldsso  #_ & 1      V]D 1 1 >)+Io & & & >rcd}|jD]&\}}||vr|ds||d|z<'dS)a+Add extra fields to the given ``gelf_dict`` However, this does not add additional fields in to ``message_dict`` that are either duplicated from standard :class:`logging.LogRecord` attributes, duplicated from the python logging module source (e.g. ``exc_text``), or violate GELF format (i.e. ``id``). .. seealso:: The list of standard :class:`logging.LogRecord` attributes can be found at: http://docs.python.org/library/logging.html#logrecord-attributes :param gelf_dict: Dictionary representing a GELF log. :type gelf_dict: dict :param record: :class:`logging.LogRecord` to extract extra fields from to insert into the given ``gelf_dict``. :type record: logging.LogRecord )argsasctimer1rErIfilenamerXid levelnamer4rWmodulemsecsmessagemsgr5rVrYrTrelativeCreatedthreadrZ_z_%sN)__dict__items startswith)r#r" skip_listkeyvalues rr:z!BaseGELFHandler._add_extra_fields sa0 2!///11 / /JC)##CNN3,?,?#). %#+& / /rc||}tj|d|j}|dS)aConvert a given ``gelf_dict`` into JSON-encoded UTF-8 bytes, thus, creating an uncompressed GELF log ready for consumption by Graylog. Since we cannot be 100% sure of what is contained in the ``gelf_dict`` we have to do some sanitation. :param gelf_dict: Dictionary representing a GELF log. :type gelf_dict: dict :return: Bytes representing a uncompressed GELF log. :rtype: bytes z,:) separatorsdefaultutf-8)_sanitize_to_unicodejsondumps_object_to_jsonencode)clsr#r$s rr zBaseGELFHandler._pack_gelf_dict>sB,,Y77 I$@STTT}}W%%%rc^t|tr-tfd|DSt|ttfr!|fd|DSt|t r|dd}|S)zConvert all strings records of the object to unicode :param obj: Object to sanitize to unicode. :type obj: object :return: Unicode string representing the given object. :rtype: str c3rK|]1\}}||fV2dSNrt).0kvrys r z7BaseGELFHandler._sanitize_to_unicode..[s\Aq))!,,c.F.Fq.I.IJrc:g|]}|Srr})r~irys r z8BaseGELFHandler._sanitize_to_unicode..`s'!K!K!K!#":":1"="=!K!K!Krrsreplace)errors) isinstancedictrklisttuple __class__datadecode)ryobjs` rrtz$BaseGELFHandler._sanitize_to_unicodePs c4  IIKK  cD%= ) ) M==!K!K!K!Ks!K!K!KLL L c4  8**WY*77C rc|t|tjr|St|S)aConvert objects that cannot be natively serialized into JSON into their string representation (for later JSON serialization). :class:`datetime.datetime` based objects will be converted into a ISO formatted timestamp string. :param obj: Object to convert into a string representation. :type obj: object :return: String representing the given object. :rtype: str )rdatetime isoformatrepr)rs rrwzBaseGELFHandler._object_to_jsones3 c8, - - #==?? "Cyyr)TTFNNFT)__name__ __module__ __qualname____doc__rr&r staticmethodr7r8r6r-r9r: classmethodr rtrwrrrrr4sc00  4!4!4!4!l      D G G\ GOO\O(55\5.$$\$&,,\,02/2/\2/h&&[&"[(\rrcDeZdZdZefdZdZedZdZ dZ dS)BaseGELFChunkera,Base UDP GELF message chunker .. warning:: This will silently drop chunk overflowing GELF messages. (i.e. GELF messages that consist of more than 128 chunks) .. note:: UDP GELF message chunking is only supported for the :class:`.handler.GELFUDPHandler`. c||_dS)zInitialize the BaseGELFChunker. :param chunk_size: Message chunk size. Messages larger than this size should be sent to Graylog in multiple chunks. :type chunk_size: int N chunk_size)rrs rrzBaseGELFChunker.__init__s%rctttjt|dz|jz S)zGet the number of chunks a GELF message requires :return: Number of chunks the specified GELF message requires. :rtype: int g?)intmathceillenr)rres r_message_chunk_numberz%BaseGELFChunker._message_chunk_numbers. 49S\\C/$/ABBCCCrc ddtjd|tjd|tjd||gS)NrsQB)rFstructpack) message_id chunk_seq total_chunkschunks r_encodezBaseGELFChunker._encodesPxx C,, C++ C..     rc #K}tjdd}tfdt dt jDD]\}}||||V dS)zGenerate and iter chunks for a GELF message :param message: GELF message to generate and iter chunks for. :type; bytes :return: Iterator of the chunks of a GELF message. :rtype: Iterator[bytes] rlc3<K|]}||jzVdSr|r)r~rrers rrz3BaseGELFChunker._gen_gelf_chunks..sH  A//0      rN)rrandomrandint enumeraterangerrr)rrerrsequencers`` r_gen_gelf_chunksz BaseGELFChunker._gen_gelf_chunkss11':: ^A'9:: (     q#g,,@@      J JOHe ,,z8\5II I I I I  J Jrc#K||tkrdS||D]}|VdS)aChunk a GELF message Silently drop chunk overflowing GELF messages. :param message: GELF message to chunk. :type message: bytes :return: Iterator of the chunks of a GELF message. :rtype: Iterator[bytes], None N)rGELF_MAX_CHUNK_NUMBERrrrers r chunk_messagezBaseGELFChunker.chunk_messagesY  % %g . .1F F F F**733  EKKKK  rN) rrrr WAN_CHUNKrrrrrrrrrrrxs  #,%%%%DDD   \  JJJ&rrceZdZdZdS)GELFChunkOverflowWarningzEWarning that a chunked GELF UDP message requires more than 128 chunksNrrrrrrrrrsOOOOrrceZdZdZdZdS)GELFWarningChunkerzBGELF UDP message chunker that warns and drops overflowing messagesc#K||tkr/tjd|t dS||D]}|VdS)zChunk a GELF message Issue a :class:`.handler.GELFChunkOverflowWarning` on chunk overflowing GELF messages. Then drop them. z"chunk overflowing GELF message: {}N)rrwarningswarnr/rrrs rrz GELFWarningChunker.chunk_messages  % %g . .1F F F M4;;GDD(    F**733  EKKKK  rN)rrrrrrrrrrs)LL     rrceZdZdZdS)GELFTruncationFailureWarningzaWarning that the truncation of a chunked GELF UDP message failed to prevent chunk overflowingNrrrrrrs$$$$rrc6eZdZdZedejfdZdZdZ dS)GELFTruncatingChunkerz!>)).99=RRR%%%%*ABTT_DTBT*U''.U\\ rc#^K||tkrptjd|t  ||}n,#t$r}tj|Yd}~dSd}~wwxYw||D]}|VdS)aChunk a GELF message Issue a :class:`.handler.GELFChunkOverflowWarning` on chunk overflowing GELF messages. Then attempt to truncate and simplify the chunk overflowing GELF message so that it may be successfully chunked without overflowing. If the truncation and simplification of the chunk overflowing GELF message fails issue a :class:`.handler.GELFTruncationFailureWarning` and drop the overflowing GELF message. z-truncating GELF chunk overflowing message: {}N) rrrrr/rrrr)rrewrs rrz#GELFTruncatingChunker.chunk_message-s  % %g . .1F F F M?FFwOO(    ::7CC/    a    **733  EKKKK  sA%% B/B  BN) rrrrrrr rrrrrrrrs[FF#3 !!!!(333jrrc>eZdZdZdefdZfdZxZS)GELFUDPHandlerzGELF UDP handleri/c dtj|fi|tj|||||_dS)adInitialize the GELFUDPHandler .. note:: By default a :class:`.handler.GELFWarningChunker` is used as the ``gelf_chunker``. Thus, GELF messages that chunk overflow will issue a :class:`.handler.GELFChunkOverflowWarning` and will be dropped. :param host: GELF UDP input host. :type host: str :param port: GELF UDP input port. :type port: int :param gelf_chunker: :class:`.handler.BaseGELFChunker` instance to handle chunking larger GELF messages. :type gelf_chunker: GELFWarningChunker N)rrr gelf_chunker)rr)portrkwargss rrzGELFUDPHandler.__init__Js@&  00000 tT222(rc t||jjkr*tt||dS|j|D]*}tt||+dSr|)rrrsuperrsendr)rsrrs rrzGELFUDPHandler.sendas q66D%0 0 0 .$ ' ' , ,Q / / / / /*88;; 8 8nd++007777 8 8r)rrrrrrr __classcell__rs@rrrGsa"'6H6H6J6J)))).888888888rrc*eZdZdZddZfdZxZS)GELFTCPHandlerzGELF TCP handler/c Ztj|fddi|tj|||dS)aInitialize the GELFTCPHandler :param host: GELF TCP input host. :type host: str :param port: GELF TCP input port. :type port: int .. attention:: GELF TCP does not support compression due to the use of the null byte (``\0``) as frame delimiter. Thus, :class:`.handler.GELFTCPHandler` does not support setting ``compress`` to :obj:`True` and is locked to :obj:`False`. rFN)rrr)rr)rrs rrzGELFTCPHandler.__init__ls=  @@@@@@tT400000rcZtt||dzS)aOAdd a null terminator to generated pickles as TCP frame objects need to be null terminated :param record: :class:`logging.LogRecord` to create a null terminated GELF log. :type record: logging.LogRecord :return: Null terminated bytes representing a GELF log. :rtype: bytes )rrr&)rr"rs rr&zGELFTCPHandler.makePickles(^T**55f==GGr)r)rrrrrr&rrs@rrris[1111& H H H H H H H H Hrrc,eZdZdZ ddZd dZdS) GELFTLSHandlerz!GELF TCP handler with TLS support/FNc |r|td||tdtj|f||d|||_|r tjn tj|_||_|r|n||_ dS)aInitialize the GELFTLSHandler :param host: GELF TLS input host. :type host: str :param port: GELF TLS input port. :type port: int :param validate: If :obj:`True`, validate the Graylog server's certificate. In this case specifying ``ca_certs`` is also required. :type validate: bool :param ca_certs: Path to CA bundle file. :type ca_certs: str :param certfile: Path to the client certificate file. :type certfile: str :param keyfile: Path to the client private key. If the private key is stored with the certificate, this parameter can be ignored. :type keyfile: str Nz%CA bundle file path must be specifiedzcertfile must be specified)r)r) rrrca_certsssl CERT_REQUIRED CERT_NONEreqscertfilekeyfile)rr)rvalidaterrrrs rrzGELFTLSHandler.__init__sB  F(DEE E  8#39:: :E4dEEfEEE  )1DC%%s}   ")7wwx rc>tjtjtj}t|dr||t j||j|j|j |j }| |j |j f|S)zCreate a TLS wrapped socket settimeout)r cert_reqsrr)rKAF_INET SOCK_STREAMhasattrrr wrap_socketrrrrconnectr)r)rtimeout plain_socketwrapped_sockets r makeSocketzGELFTLSHandler.makeSockets}V^V5GHH < . . -  # #G , , , ]iL]      495666r)rFNNN)r)rrrrrrrrrrrsT++ ,8,8,8,8\rrc"eZdZdZ d dZdZdS) GELFHTTPHandlerzGELF HTTP handler/T/gelfc tj|fd|i|||_||_||_||_i|_|r d|jd<dSdS)aInitialize the GELFHTTPHandler :param host: GELF HTTP input host. :type host: str :param port: GELF HTTP input port. :type port: int :param compress: If :obj:`True` compress the GELF message before sending it to the Graylog server. :type compress: bool :param path: Path of the HTTP input. (see http://docs.graylog.org/en/latest/pages/sending_data.html#gelf-via-http) :type path: str :param timeout: Number of seconds the HTTP client should wait before it discards the request if the Graylog server doesn't respond. :type timeout: int rz gzip,deflatezContent-EncodingN)rrr)rpathrheaders)rr)rrr rrs rrzGELFHTTPHandler.__init__sj.  CCCFCCC      >/=DL+ , , , > >rc||}tj|j|j|j}|d|j||jdS)aConvert a :class:`logging.LogRecord` to GELF and emit it to Graylog via a HTTP POST request :param record: :class:`logging.LogRecord` to convert into a GELF log and emit to Graylog via a HTTP POST request. :type record: logging.LogRecord )r)rrPOSTN) r&httplibHTTPConnectionr)rrrequestr r )rr"r% connections remitzGELFHTTPHandler.emits_((+DL    649fdlCCCCCrN)rTrr)rrrrrrrrrrrsJFG > > > >D D D D D Drr)3rrabcrrurrrrKrrsysrGr!logging.handlersrrr LAN_CHUNK version_infobytesstrrtextunicoderABCMetar ImportError http.clientclientCRITICALrWARNINGINFODEBUGr2rrrobjectrWarningrrrrrrrrrrrr&szPO    ;;;;;;;;   A!JD$$gJD$v 'CC #+cc%jj"b ) )C"NNNN"""!!!!!!!!" a M1 OQ L! M1  AAAAAgosAAAH JJJJJfJJJZPPPPPwPPP&$$$$$#;$$$ cccccOcccL88888_o888D!H!H!H!H!H_m!H!H!HHAAAAA^AAAJ1D1D1D1D1Do1D1D1D1D1DsB B! B!