Class LoggingAppender (0.130.12-alpha)

public class LoggingAppender extends UnsynchronizedAppenderBase<ILoggingEvent>

Logback appender for Google Cloud Logging.

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

Inheritance

java.lang.Object > ch.qos.logback.core.spi.ContextAwareBase > ch.qos.logback.core.UnsynchronizedAppenderBase > LoggingAppender

Static Fields

DEFAULT_INSTRUMENTATION_VERSION

public static final String DEFAULT_INSTRUMENTATION_VERSION
Field Value
TypeDescription
String

JAVA_LOGBACK_LIBRARY_NAME

public static final String JAVA_LOGBACK_LIBRARY_NAME
Field Value
TypeDescription
String

Constructors

LoggingAppender()

public LoggingAppender()

Methods

addEnhancer(String enhancerClassName)

public void addEnhancer(String enhancerClassName)

Add extra labels using classes that implement LoggingEnhancer.

Parameter
NameDescription
enhancerClassNameString

addLoggingEventEnhancer(String enhancerClassName)

public void addLoggingEventEnhancer(String enhancerClassName)
Parameter
NameDescription
enhancerClassNameString

append(ILoggingEvent e)

protected void append(ILoggingEvent e)
Parameter
NameDescription
ech.qos.logback.classic.spi.ILoggingEvent
Overrides
ch.qos.logback.core.UnsynchronizedAppenderBase.append(E)

flush()

public void flush()

Flushes any pending asynchronous logging writes.

getLoggingOptions()

protected LoggingOptions getLoggingOptions()

Gets the LoggingOptions to use for this LoggingAppender.

Returns
TypeDescription
com.google.cloud.logging.LoggingOptions

getWriteSynchronicity()

public Synchronicity getWriteSynchronicity()

Returns the current value of the ingestion mode.

The method is deprecated. Use appender configuration to set up the ingestion

Returns
TypeDescription
com.google.cloud.logging.Synchronicity

a Synchronicity value of the ingestion module.

setAutoPopulateMetadata(boolean flag)

public void setAutoPopulateMetadata(boolean flag)

Sets the automatic population of metadata fields for ingested logs.

Default to true.

Parameter
NameDescription
flagboolean

the metadata auto-population flag.

setCredentialsFile(String credentialsFile)

public void setCredentialsFile(String credentialsFile)

Sets the path to the https://cloud.google.com/iam/docs/creating-managing-service-account-keys. If not set the appender will use GoogleCredentials#getApplicationDefault() to authenticate.

Parameter
NameDescription
credentialsFileString

the path to the credentials file.

setFlushLevel(Level flushLevel)

public void setFlushLevel(Level flushLevel)

Sets a threshold for log severity level to flush all log entries that were batched so far.

Defaults to Error.

Parameter
NameDescription
flushLevelch.qos.logback.classic.Level

Logback log level

setLog(String log)

public void setLog(String log)

Sets the LOG_ID part of the https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#FIELDS.log_name for which the logs are ingested.

Parameter
NameDescription
logString

LOG_ID part of the name

setLogDestinationProjectId(String projectId)

public void setLogDestinationProjectId(String projectId)

Sets project ID to be used to customize log destination name for written log entries.

Parameter
NameDescription
projectIdString

The project ID to be used to construct the resource destination name for log entries.

setLogbackBatchingSettings(LogbackBatchingSettings batchingSettings)

public void setLogbackBatchingSettings(LogbackBatchingSettings batchingSettings)

Sets the LogbackBatchingSettings to be used for the asynchronous mode call(s) to Logging API

Default to null.

Parameter
NameDescription
batchingSettingsLogbackBatchingSettings

the LogbackBatchingSettings to be used for asynchronous mode call(s) to Logging API

setPartialSuccess(boolean flag)

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.

Parameter
NameDescription
flagboolean

the partialSuccess flag.

setRedirectToStdout(boolean flag)

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.

Parameter
NameDescription
flagboolean

the redirect flag.

setResourceType(String resourceType)

public void setResourceType(String resourceType)

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.

Parameter
NameDescription
resourceTypeString

the name of the monitored resource.

setWriteSynchronicity(Synchronicity flag)

public void setWriteSynchronicity(Synchronicity flag)

Sets the log ingestion mode. It can be one of the Synchronicity values.

Default to Synchronicity.ASYNC

Parameter
NameDescription
flagcom.google.cloud.logging.Synchronicity

the new ingestion mode.

start()

public synchronized void start()

Initialize and configure the cloud logging service.

Overrides
ch.qos.logback.core.UnsynchronizedAppenderBase.start()

stop()

public synchronized void stop()
Overrides
ch.qos.logback.core.UnsynchronizedAppenderBase.stop()