--- apiVersion: v1 kind: List items: - apiVersion: v1 kind: ConfigMap metadata: labels: funktion.fabric8.io/kind: Connector provider: fabric8 project: connector-log version: 1.1.23 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: fabric8/connector-log:1.1.23 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. properties: loggerName: kind: path group: producer required: true type: string javaType: java.lang.String deprecated: false secret: false description: The logger name to use 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. groupDelay: kind: parameter group: producer type: integer javaType: java.lang.Long deprecated: false secret: false description: Set the initial delay for stats (in millis) 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) 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. 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. marker: kind: parameter group: producer type: string javaType: java.lang.String deprecated: false secret: false description: An optional Marker name to use. 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). 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. 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. 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) showBody: kind: parameter group: formatting label: formatting type: boolean javaType: boolean deprecated: false secret: false defaultValue: true description: Show the message body. showBodyType: kind: parameter group: formatting label: formatting type: boolean javaType: boolean deprecated: false secret: false defaultValue: true description: Show the body Java type. 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. 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) showExchangeId: kind: parameter group: formatting label: formatting type: boolean javaType: boolean deprecated: false secret: false defaultValue: false description: Show the unique exchange ID. 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). showFiles: kind: parameter group: formatting label: formatting type: boolean javaType: boolean deprecated: false secret: false defaultValue: false description: If enabled Camel will output files 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. showHeaders: kind: parameter group: formatting label: formatting type: boolean javaType: boolean deprecated: false secret: false defaultValue: false description: Show the message headers. 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. showProperties: kind: parameter group: formatting label: formatting type: boolean javaType: boolean deprecated: false secret: false defaultValue: false description: Show the exchange properties. 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. 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. 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. 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. 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\ \ \n \n \n \n \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\ \n\ \ \n\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\ \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\ \n---------------------------------------------------------------------------------------\n\ \nAnd then we can have Camel routes using the log uri with different\noptions:\n\ \n[source,java]\n---------------------------------------------\n\n...\n\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"