---
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"