---
apiVersion: v1
kind: List
items:
- apiVersion: v1
  kind: ConfigMap
  metadata:
    labels:
      funktion.fabric8.io/kind: Connector
      provider: fabric8
      project: connector-log
      version: 1.1.39
      group: io.fabric8.funktion.connector
    name: log
  data:
    deployment.yml: |
      ---
      apiVersion: extensions/v1beta1
      kind: Deployment
      metadata:
        labels:
          funktion.fabric8.io/kind: Subscription
          connector: log
      spec:
        replicas: 1
        template:
          metadata:
            labels:
              funktion.fabric8.io/kind: Subscription
              connector: log
          spec:
            containers:
            - image: funktion/connector-log:1.1.39
              name: connector
    schema.yml: |
      ---
      component:
        kind: component
        scheme: log
        syntax: log:loggerName
        title: Log
        description: The log component logs message exchanges to the underlying logging mechanism.
        label: core,monitoring
        deprecated: false
        async: false
        producerOnly: true
        javaType: org.apache.camel.component.log.LogComponent
        groupId: org.apache.camel
        artifactId: camel-core
        version: 2.18.1
      componentProperties:
        exchangeFormatter:
          kind: property
          type: object
          javaType: org.apache.camel.spi.ExchangeFormatter
          deprecated: false
          secret: false
          description: Sets a custom ExchangeFormatter to convert the Exchange to a String suitable for logging. If not specified we default to DefaultExchangeFormatter.
          order: 0
      properties:
        loggerName:
          kind: path
          group: producer
          required: true
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: The logger name to use
          order: 0
        groupActiveOnly:
          kind: parameter
          group: producer
          type: boolean
          javaType: java.lang.Boolean
          deprecated: false
          secret: false
          defaultValue: true
          description: If true will hide stats when no new messages have been received for a time interval if false show stats regardless of message traffic.
          order: 1
        groupDelay:
          kind: parameter
          group: producer
          type: integer
          javaType: java.lang.Long
          deprecated: false
          secret: false
          description: Set the initial delay for stats (in millis)
          order: 2
        groupInterval:
          kind: parameter
          group: producer
          type: integer
          javaType: java.lang.Long
          deprecated: false
          secret: false
          description: If specified will group message stats by this time interval (in millis)
          order: 3
        groupSize:
          kind: parameter
          group: producer
          type: integer
          javaType: java.lang.Integer
          deprecated: false
          secret: false
          description: An integer that specifies a group size for throughput logging.
          order: 4
        level:
          kind: parameter
          group: producer
          type: string
          javaType: java.lang.String
          enum:
          - ERROR
          - WARN
          - INFO
          - DEBUG
          - TRACE
          - OFF
          deprecated: false
          secret: false
          defaultValue: INFO
          description: Logging level to use. The default value is INFO.
          order: 5
        marker:
          kind: parameter
          group: producer
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: An optional Marker name to use.
          order: 6
        synchronous:
          kind: parameter
          group: advanced
          label: advanced
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
          order: 7
        maxChars:
          kind: parameter
          group: formatting
          label: formatting
          type: integer
          javaType: int
          deprecated: false
          secret: false
          defaultValue: "10000"
          description: Limits the number of characters logged per line.
          order: 8
        multiline:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: If enabled then each information is outputted on a newline.
          order: 9
        showAll:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: Quick option for turning all options on. (multiline maxChars has to be manually set if to be used)
          order: 10
        showBody:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: true
          description: Show the message body.
          order: 11
        showBodyType:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: true
          description: Show the body Java type.
          order: 12
        showCaughtException:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: f the exchange has a caught exception show the exception message (no stack trace). A caught exception is stored as a property on the exchange (using the key link org.apache.camel.ExchangeEXCEPTION_CAUGHT and for instance a doCatch can catch exceptions.
          order: 13
        showException:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: If the exchange has an exception show the exception message (no stacktrace)
          order: 14
        showExchangeId:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: Show the unique exchange ID.
          order: 15
        showExchangePattern:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: true
          description: Shows the Message Exchange Pattern (or MEP for short).
          order: 16
        showFiles:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: If enabled Camel will output files
          order: 17
        showFuture:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: If enabled Camel will on Future objects wait for it to complete to obtain the payload to be logged.
          order: 18
        showHeaders:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: Show the message headers.
          order: 19
        showOut:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: If the exchange has an out message show the out message.
          order: 20
        showProperties:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: Show the exchange properties.
          order: 21
        showStackTrace:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: Show the stack trace if an exchange has an exception. Only effective if one of showAll showException or showCaughtException are enabled.
          order: 22
        showStreams:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: false
          description: Whether Camel should show stream bodies or not (eg such as java.io.InputStream). Beware if you enable this option then you may not be able later to access the message body as the stream have already been read by this logger. To remedy this you will have to use Stream Caching.
          order: 23
        skipBodyLineSeparator:
          kind: parameter
          group: formatting
          label: formatting
          type: boolean
          javaType: boolean
          deprecated: false
          secret: false
          defaultValue: true
          description: Whether to skip line separators when logging the message body. This allows to log the message body in one line setting this option to false will preserve any line separators from the body which then will log the body as is.
          order: 24
        style:
          kind: parameter
          group: formatting
          label: formatting
          type: string
          javaType: org.apache.camel.processor.DefaultExchangeFormatter.OutputStyle
          enum:
          - Default
          - Tab
          - Fixed
          deprecated: false
          secret: false
          defaultValue: Default
          description: Sets the outputs style to use.
          order: 25
    documentation.adoc: "[[Log-LogComponent]]\nLog Component\n~~~~~~~~~~~~~\n\nThe\
      \ *log:* component logs message exchanges to the underlying logging\nmechanism.\n\
      \nCamel uses http://www.slf4j.org/[sfl4j] which allows you to configure\nlogging\
      \ via, among others:\n\n* http://logging.apache.org/log4j/[Log4j]\n* http://logback.qos.ch/[Logback]\n\
      *\nhttp://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/package-summary.html[JDK\n\
      Util Logging logging]\n\n[[Log-URIformat]]\nURI format\n^^^^^^^^^^\n\n[source,java]\n\
      -----------------------------\nlog:loggingCategory[?options]\n-----------------------------\n\
      \nWhere *loggingCategory* is the name of the logging category to use. You\n\
      can append query options to the URI in the following format,\n`?option=value&option=value&...`\n\
      \nINFO:*Using Logger instance from the the Registry*\nAs of *Camel 2.12.4/2.13.1*,\
      \ if there's single instance\nof??`org.slf4j.Logger` found in the Registry,\
      \ the *loggingCategory* is no\nlonger used to create logger instance. The registered\
      \ instance is used\ninstead. Also it is possible to reference particular??`Logger`\
      \ instance\nusing??`?logger=#myLogger` URI parameter. Eventually, if there's\
      \ no\nregistered and URI??`logger` parameter, the logger instance is created\n\
      using *loggingCategory*.\n\nFor example, a log endpoint typically specifies\
      \ the logging level using\nthe `level` option, as follows:\n\n[source,java]\n\
      ----------------------------------------\nlog:org.apache.camel.example?level=DEBUG\n\
      ----------------------------------------\n\nThe default logger logs every exchange\
      \ (_regular logging_). But Camel\nalso ships with the `Throughput` logger, which\
      \ is used whenever the\n`groupSize` option is specified.\n\nTIP:*Also a log\
      \ in the DSL*\nThere is also a `log` directly in the DSL, but it has a different\n\
      purpose. Its meant for lightweight and human logs. See more details at\nlink:logeip.html[LogEIP].\n\
      \n[[Log-Options]]\nOptions\n^^^^^^^\n\n\n\n// component options: START\nThe\
      \ Log component supports 1 options which are listed below.\n\n\n\n{% raw %}\n\
      [width=\"100%\",cols=\"2,1m,7\",options=\"header\"]\n|=======================================================================\n\
      | Name | Java Type | Description\n| exchangeFormatter | ExchangeFormatter |\
      \ Sets a custom ExchangeFormatter to convert the Exchange to a String suitable\
      \ for logging. If not specified we default to DefaultExchangeFormatter.\n|=======================================================================\n\
      {% endraw %}\n// component options: END\n\n\n\n\n// endpoint options: START\n\
      The Log component supports 26 endpoint options which are listed below:\n\n{%\
      \ raw %}\n[width=\"100%\",cols=\"2,1,1m,1m,5\",options=\"header\"]\n|=======================================================================\n\
      | Name | Group | Default | Java Type | Description\n| loggerName | producer\
      \ |  | String | *Required* The logger name to use\n| groupActiveOnly | producer\
      \ | true | Boolean | If true will hide stats when no new messages have been\
      \ received for a time interval if false show stats regardless of message traffic.\n\
      | groupDelay | producer |  | Long | Set the initial delay for stats (in millis)\n\
      | groupInterval | producer |  | Long | If specified will group message stats\
      \ by this time interval (in millis)\n| groupSize | producer |  | Integer | An\
      \ integer that specifies a group size for throughput logging.\n| level | producer\
      \ | INFO | String | Logging level to use. The default value is INFO.\n| marker\
      \ | producer |  | String | An optional Marker name to use.\n| synchronous |\
      \ advanced | false | boolean | Sets whether synchronous processing should be\
      \ strictly used or Camel is allowed to use asynchronous processing (if supported).\n\
      | maxChars | formatting | 10000 | int | Limits the number of characters logged\
      \ per line.\n| multiline | formatting | false | boolean | If enabled then each\
      \ information is outputted on a newline.\n| showAll | formatting | false | boolean\
      \ | Quick option for turning all options on. (multiline maxChars has to be manually\
      \ set if to be used)\n| showBody | formatting | true | boolean | Show the message\
      \ body.\n| showBodyType | formatting | true | boolean | Show the body Java type.\n\
      | showCaughtException | formatting | false | boolean | f the exchange has a\
      \ caught exception show the exception message (no stack trace). A caught exception\
      \ is stored as a property on the exchange (using the key link org.apache.camel.ExchangeEXCEPTION_CAUGHT\
      \ and for instance a doCatch can catch exceptions.\n| showException | formatting\
      \ | false | boolean | If the exchange has an exception show the exception message\
      \ (no stacktrace)\n| showExchangeId | formatting | false | boolean | Show the\
      \ unique exchange ID.\n| showExchangePattern | formatting | true | boolean |\
      \ Shows the Message Exchange Pattern (or MEP for short).\n| showFiles | formatting\
      \ | false | boolean | If enabled Camel will output files\n| showFuture | formatting\
      \ | false | boolean | If enabled Camel will on Future objects wait for it to\
      \ complete to obtain the payload to be logged.\n| showHeaders | formatting |\
      \ false | boolean | Show the message headers.\n| showOut | formatting | false\
      \ | boolean | If the exchange has an out message show the out message.\n| showProperties\
      \ | formatting | false | boolean | Show the exchange properties.\n| showStackTrace\
      \ | formatting | false | boolean | Show the stack trace if an exchange has an\
      \ exception. Only effective if one of showAll showException or showCaughtException\
      \ are enabled.\n| showStreams | formatting | false | boolean | Whether Camel\
      \ should show stream bodies or not (eg such as java.io.InputStream). Beware\
      \ if you enable this option then you may not be able later to access the message\
      \ body as the stream have already been read by this logger. To remedy this you\
      \ will have to use Stream Caching.\n| skipBodyLineSeparator | formatting | true\
      \ | boolean | Whether to skip line separators when logging the message body.\
      \ This allows to log the message body in one line setting this option to false\
      \ will preserve any line separators from the body which then will log the body\
      \ as is.\n| style | formatting | Default | OutputStyle | Sets the outputs style\
      \ to use.\n|=======================================================================\n\
      {% endraw %}\n// endpoint options: END\n\n\n[[Log-Regularloggersample]]\nRegular\
      \ logger sample\n^^^^^^^^^^^^^^^^^^^^^\n\nIn the route below we log the incoming\
      \ orders at `DEBUG` level before\nthe order is processed:\n\n[source,java]\n\
      ------------------------------------------------------------------------------------------\n\
      from(\"activemq:orders\").to(\"log:com.mycompany.order?level=DEBUG\").to(\"\
      bean:processOrder\");\n------------------------------------------------------------------------------------------\n\
      \nOr using Spring XML to define the route:\n\n[source,xml]\n---------------------------------------------------\n\
      \  <route>\n    <from uri=\"activemq:orders\"/>\n    <to uri=\"log:com.mycompany.order?level=DEBUG\"\
      />\n    <to uri=\"bean:processOrder\"/>\n  </route> \n---------------------------------------------------\n\
      \n[[Log-Regularloggerwithformattersample]]\nRegular logger with formatter sample\n\
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIn the route below we log the incoming\
      \ orders at `INFO` level before the\norder is processed.\n\n[source,java]\n\
      --------------------------------------------------------------------------------------\n\
      from(\"activemq:orders\").\n    to(\"log:com.mycompany.order?showAll=true&multiline=true\"\
      ).to(\"bean:processOrder\");\n--------------------------------------------------------------------------------------\n\
      \n[[Log-ThroughputloggerwithgroupSizesample]]\nThroughput logger with groupSize\
      \ sample\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIn the route below we log\
      \ the throughput of the incoming orders at\n`DEBUG` level grouped by 10 messages.\n\
      \n[source,java]\n-----------------------------------------------------------------------------------\n\
      from(\"activemq:orders\").\n    to(\"log:com.mycompany.order?level=DEBUG&groupSize=10\"\
      ).to(\"bean:processOrder\");\n-----------------------------------------------------------------------------------\n\
      \n[[Log-ThroughputloggerwithgroupIntervalsample]]\nThroughput logger with groupInterval\
      \ sample\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis route will result\
      \ in message stats logged every 10s, with an\ninitial 60s delay and stats should\
      \ be displayed even if there isn't any\nmessage traffic.\n\n[source,java]\n\
      -----------------------------------------------------------------------------------------------------------------------------\n\
      from(\"activemq:orders\").\nto(\"log:com.mycompany.order?level=DEBUG&groupInterval=10000&groupDelay=60000&groupActiveOnly=false\"\
      ).to(\"bean:processOrder\");\n-----------------------------------------------------------------------------------------------------------------------------\n\
      \nThe following will be logged:\n\n[source,java]\n------------------------------------------------------------------------------------------------------------------------------------\n\
      \"Received: 1000 new messages, with total 2000 so far. Last group took: 10000\
      \ millis which is: 100 messages per second. average: 100\"\n------------------------------------------------------------------------------------------------------------------------------------\n\
      \n[[Log-Fullcustomizationoftheloggingoutput]]\nFull customization of the logging\
      \ output\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n*Available as of Camel\
      \ 2.11*\n\nWith the options outlined in the link:log.html[#Formatting] section,\
      \ you\ncan control much of the output of the logger. However, log lines will\n\
      always follow this structure:\n\n[source,java]\n--------------------------------------------------------------------------------------------------------------\n\
      Exchange[Id:ID-machine-local-50656-1234567901234-1-2, ExchangePattern:InOut,\
      \ \nProperties:{CamelToEndpoint=log://org.apache.camel.component.log.TEST?showAll=true,\
      \ \nCamelCreatedTimestamp=Thu Mar 28 00:00:00 WET 2013}, \nHeaders:{breadcrumbId=ID-machine-local-50656-1234567901234-1-1},\
      \ BodyType:String, Body:Hello World, Out: null]\n--------------------------------------------------------------------------------------------------------------\n\
      \nThis format is unsuitable in some cases, perhaps because you need to...\n\n\
      * ... filter the headers and properties that are printed, to strike a\nbalance\
      \ between insight and verbosity.\n* ... adjust the log message to whatever you\
      \ deem most readable.\n* ... tailor log messages for digestion by log mining\
      \ systems, e.g.\nSplunk.\n* ... print specific body types differently.\n* ...\
      \ etc.\n\nWhenever you require absolute customization, you can create a class\
      \ that\nimplements the\nhttp://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/ExchangeFormatter.html[`ExchangeFormatter`]\n\
      interface. Within the `format(Exchange)` method you have access to the\nfull\
      \ Exchange, so you can select and extract the precise information you\nneed,\
      \ format it in a custom manner and return it. The return value will\nbecome\
      \ the final log message.\n\nYou can have the Log component pick up your custom\
      \ `ExchangeFormatter`\nin either of two ways:\n\n*Explicitly instantiating the\
      \ LogComponent in your Registry:*\n\n[source,java]\n---------------------------------------------------------------------\n\
      <bean name=\"log\" class=\"org.apache.camel.component.log.LogComponent\">\n\
      \   <property name=\"exchangeFormatter\" ref=\"myCustomFormatter\" />\n</bean>\n\
      ---------------------------------------------------------------------\n\n*Convention\
      \ over configuration:*\n\nSimply by registering a bean with the name `logFormatter`;\
      \ the Log\nComponent is intelligent enough to pick it up automatically.\n\n\
      [source,java]\n----------------------------------------------------------------------\n\
      <bean name=\"logFormatter\" class=\"com.xyz.MyCustomExchangeFormatter\" />\n\
      ----------------------------------------------------------------------\n\nNOTE:\
      \ the `ExchangeFormatter` gets applied to *all Log endpoints within\nthat Camel\
      \ Context*. If you need different ExchangeFormatters for\ndifferent endpoints,\
      \ just instantiate the LogComponent as many times as\nneeded, and use the relevant\
      \ bean name as the endpoint prefix.\n\nFrom *Camel 2.11.2/2.12* onwards when\
      \ using a custom log formatter, you\ncan specify parameters in the log uri,\
      \ which gets configured on the\ncustom log formatter. Though when you do that\
      \ you should define the\n\"logFormatter\" as prototype scoped so its not shared\
      \ if you have\ndifferent parameters, eg:\n\n[source,java]\n---------------------------------------------------------------------------------------\n\
      <bean name=\"logFormatter\" class=\"com.xyz.MyCustomExchangeFormatter\" scope=\"\
      prototype\"/>\n---------------------------------------------------------------------------------------\n\
      \nAnd then we can have Camel routes using the log uri with different\noptions:\n\
      \n[source,java]\n---------------------------------------------\n<to uri=\"log:foo?param1=foo&amp;param2=100\"\
      />\n...\n<to uri=\"log:bar?param1=bar&amp;param2=200\"/>\n---------------------------------------------\n\
      \n[[Log-UsingLogcomponentinOSGi]]\nUsing Log component in OSGi\n+++++++++++++++++++++++++++\n\
      \n*Improvement as of Camel 2.12.4/2.13.1*\n\nWhen using??Log component inside\
      \ OSGi (e.g., in Karaf), the underlying\nlogging mechanisms are provided by\
      \ PAX logging. It searches for a bundle\nwhich invokes??`org.slf4j.LoggerFactory.getLogger()`\
      \ method and\nassociates the bundle with the logger instance. Without specifying\n\
      custom??`org.sfl4j.Logger` instance, the logger created by Log component\nis\
      \ associated with `camel-core` bundle.\n\nIn some scenarios it is required that\
      \ the bundle associated with logger\nshould be the bundle which contains route\
      \ definition. To do this, either\nregister single instance of??`org.slf4j.Logger`\
      \ in the Registry or\nreference it using??`logger` URI parameter.\n\n[[Log-SeeAlso]]\n\
      See Also\n^^^^^^^^\n\n* link:configuring-camel.html[Configuring Camel]\n* link:component.html[Component]\n\
      * link:endpoint.html[Endpoint]\n* link:getting-started.html[Getting Started]\n\
      \n* link:tracer.html[Tracer]\n* link:how-do-i-use-log4j.html[How do I use log4j]\n\
      * link:how-do-i-use-java-14-logging.html[How do I use Java 1.4 logging]\n* link:logeip.html[LogEIP]\
      \ for using `log` directly in the DSL for human\nlogs.\n\n"
