Class LoggingAppender
- All Implemented Interfaces:
ch.qos.logback.core.Appender<ch.qos.logback.classic.spi.ILoggingEvent>,ch.qos.logback.core.spi.ContextAware,ch.qos.logback.core.spi.FilterAttachable<ch.qos.logback.classic.spi.ILoggingEvent>,ch.qos.logback.core.spi.LifeCycle
Appender configuration in logback.xml:
<appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
<!-- Optional: filter logs at and above this level -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<!-- Optional: defaults to "java.log" -->
<log>application.log</log>
<!-- Optional: defaults to "OFF" -->
<flushLevel>WARN</flushLevel>
<!-- Optional: defaults to ASYNC -->
<writeSynchronicity>SYNC</writeSynchronicity>
<!-- Optional: defaults to true -->
<autoPopulateMetadata>false</autoPopulateMetadata>
<!-- Optional: defaults to false -->
<redirectToStdout>true</redirectToStdout>
<!-- Optional: auto detects on App Engine Flex, Standard, GCE and GKE, defaults to "global". See supported resource types -->
<resourceType></resourceType>
<!-- Optional: defaults to the default credentials of the environment -->
<credentialsFile>/path/to/credentials/file</credentialsFile>
<!-- Optional: defaults to the project id obtained during authentication process. Project id is also used to construct resource name of the log entries -->
<logDestinationProjectId>String</logDestinationProjectId>
<!-- Optional: add custom labels to log entries using LoggingEnhancer classes -->
<enhancer>com.example.enhancers.TestLoggingEnhancer</enhancer>
<enhancer>com.example.enhancers.AnotherEnhancer</enhancer>
<!-- Optional: specifies if a batch's valid entries should be written even if some other entry failed due to an error. Defaults to true -->
<partialSuccess>true</partialSuccess>
<!-- Optional: In the asynchronous mode the call(s) to Logging API takes place asynchronously and few calls to `write()`
method may be batched together to compose a single call to Logging API. In order to control the batching settings,
the `logbackBatchingSettings` section can be used as shown below.
See [BatchingSettings](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.batching.BatchingSettings)
for more info regarding parameters shown below -->
<logbackBatchingSettings>
<elementCountThreshold>100</elementCountThreshold>
<requestByteThreshold>1000</requestByteThreshold>
<delayThreshold>500</delayThreshold>
<maxOutstandingElementCount>10000</maxOutstandingElementCount>
<maxOutstandingRequestBytes>100000</maxOutstandingRequestBytes>
<limitExceededBehavior>Ignore</limitExceededBehavior>
</logbackBatchingSettings>
</appender>
-
Field Summary
FieldsFields inherited from class ch.qos.logback.core.UnsynchronizedAppenderBase
name, startedFields inherited from class ch.qos.logback.core.spi.ContextAwareBase
context -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddEnhancer(String enhancerClassName) Add extra labels using classes that implementLoggingEnhancer.voidaddLoggingEventEnhancer(String enhancerClassName) protected voidappend(ch.qos.logback.classic.spi.ILoggingEvent e) voidflush()Deprecated.protected com.google.cloud.logging.LoggingOptionsGets theLoggingOptionsto use for thisLoggingAppender.com.google.cloud.logging.SynchronicityDeprecated.voidsetAutoPopulateMetadata(boolean flag) Sets the automatic population of metadata fields for ingested logs.voidsetCredentials(com.google.auth.oauth2.GoogleCredentials credentials) Sets the credential to use.voidsetCredentialsFile(String credentialsFile) This method is obsolete because of a potential security risk.voidsetFlushLevel(ch.qos.logback.classic.Level flushLevel) Sets a threshold for log severity level to flush all log entries that were batched so far.voidSets the LOG_ID part of the log name for which the logs are ingested.voidsetLogbackBatchingSettings(LogbackBatchingSettings batchingSettings) Sets theLogbackBatchingSettingsto be used for the asynchronous mode call(s) to Logging APIvoidsetLogDestinationProjectId(String projectId) Sets project ID to be used to customize log destination name for written log entries.voidsetPartialSuccess(boolean flag) Sets the flag indicating if a batch's valid entries should be written even if some other entry failed due to an error.voidsetRedirectToStdout(boolean flag) Sets the redirect of the appender's output to STDOUT instead of ingesting logs to Cloud Logging using Logging API.voidsetResourceType(String resourceType) Sets the name of the monitored resource (Optional).voidsetWriteSynchronicity(com.google.cloud.logging.Synchronicity flag) Sets the log ingestion mode.voidstart()Initialize and configure the cloud logging service.voidstop()Methods inherited from class ch.qos.logback.core.UnsynchronizedAppenderBase
addFilter, clearAllFilters, doAppend, getCopyOfAttachedFiltersList, getFilterChainDecision, getName, isStarted, setName, toStringMethods inherited from class ch.qos.logback.core.spi.ContextAwareBase
addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, getDeclaredOrigin, getStatusManager, setContextMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface ch.qos.logback.core.spi.ContextAware
addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, setContext
-
Field Details
-
JAVA_LOGBACK_LIBRARY_NAME
- See Also:
-
DEFAULT_INSTRUMENTATION_VERSION
- See Also:
-
-
Constructor Details
-
LoggingAppender
public LoggingAppender()
-
-
Method Details
-
setFlushLevel
public void setFlushLevel(ch.qos.logback.classic.Level flushLevel) Sets a threshold for log severity level to flush all log entries that were batched so far.Defaults to OFF.
- Parameters:
flushLevel- Logback log level
-
setLog
Sets the LOG_ID part of the log name for which the logs are ingested.- Parameters:
log- LOG_ID part of the name
-
setResourceType
Sets the name of the monitored resource (Optional). If not define the appender will try to identify the resource type automatically. Currently support resource types include "gae_app", "gce_instance", "k8s_container", "cloud_run_revision" and "cloud_function". If the appender fails to identify the resource type, it will be set to "global".Must be a one of the supported resource types.
- Parameters:
resourceType- the name of the monitored resource.
-
setCredentialsFile
@ObsoleteApi("This method is obsolete because of a potential security risk. Use the setCredentials() method instead") public void setCredentialsFile(String credentialsFile) This method is obsolete because of a potential security risk. Use thesetCredentials(GoogleCredentials)method instead.If you know that you will be loading credential configurations of a specific type, it is recommended to use a credential-type-specific `fromStream()` method. This will ensure that an unexpected credential type with potential for malicious intent is not loaded unintentionally. You might still have to do validation for certain credential types. Please follow the recommendation for that method.
If you are loading your credential configuration from an untrusted source and have not mitigated the risks (e.g. by validating the configuration yourself), make these changes as soon as possible to prevent security risks to your environment.
Regardless of the method used, it is always your responsibility to validate configurations received from external sources.
Sets the path to the credential file. If not set the appender will use
GoogleCredentials.getApplicationDefault()to authenticate.- Parameters:
credentialsFile- the path to the credentials file.
-
setCredentials
public void setCredentials(com.google.auth.oauth2.GoogleCredentials credentials) Sets the credential to use. If not set the appender will useGoogleCredentials.getApplicationDefault()to authenticate.- Parameters:
credentials- the GoogleCredentials to set
-
setLogDestinationProjectId
Sets project ID to be used to customize log destination name for written log entries.- Parameters:
projectId- The project ID to be used to construct the resource destination name for log entries.
-
setWriteSynchronicity
public void setWriteSynchronicity(com.google.cloud.logging.Synchronicity flag) Sets the log ingestion mode. It can be one of theSynchronicityvalues.Default to
Synchronicity.ASYNC- Parameters:
flag- the new ingestion mode.
-
setAutoPopulateMetadata
public void setAutoPopulateMetadata(boolean flag) Sets the automatic population of metadata fields for ingested logs.Default to
true.- Parameters:
flag- the metadata auto-population flag.
-
setRedirectToStdout
public void setRedirectToStdout(boolean flag) Sets the redirect of the appender's output to STDOUT instead of ingesting logs to Cloud Logging using Logging API.Default to
false.- Parameters:
flag- the redirect flag.
-
setLogbackBatchingSettings
Sets theLogbackBatchingSettingsto be used for the asynchronous mode call(s) to Logging APIDefault to
null.- Parameters:
batchingSettings- theLogbackBatchingSettingsto be used for asynchronous mode call(s) to Logging API
-
setPartialSuccess
public void setPartialSuccess(boolean flag) Sets the flag indicating if a batch's valid entries should be written even if some other entry failed due to an error.Default to
true.- Parameters:
flag- the partialSuccess flag.
-
addEnhancer
Add extra labels using classes that implementLoggingEnhancer. -
addLoggingEventEnhancer
-
getWriteSynchronicity
Deprecated.Returns the current value of the ingestion mode.The method is deprecated. Use appender configuration to set up the ingestion
- Returns:
- a
Synchronicityvalue of the ingestion module.
-
start
public void start()Initialize and configure the cloud logging service.- Specified by:
startin interfacech.qos.logback.core.spi.LifeCycle- Overrides:
startin classch.qos.logback.core.UnsynchronizedAppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
-
append
protected void append(ch.qos.logback.classic.spi.ILoggingEvent e) - Specified by:
appendin classch.qos.logback.core.UnsynchronizedAppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
-
stop
public void stop()- Specified by:
stopin interfacech.qos.logback.core.spi.LifeCycle- Overrides:
stopin classch.qos.logback.core.UnsynchronizedAppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
-
flush
Deprecated.Flushes any pending asynchronous logging writes. -
getLoggingOptions
protected com.google.cloud.logging.LoggingOptions getLoggingOptions()Gets theLoggingOptionsto use for thisLoggingAppender.
-