Coder Social home page Coder Social logo

java-logging-logback's Introduction

Google Cloud Logging Logback Appender Client for Java

Java idiomatic client for Cloud Logging Logback Appender.

Maven Stability

Note: This client is a work-in-progress, and may occasionally make backwards-incompatible changes.

Quickstart

If you are using Maven, add this to your pom.xml file:

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-logging-logback</artifactId>
  <version>0.131.6-alpha</version>
</dependency>

If you are using Gradle without BOM, add this to your dependencies:

implementation 'com.google.cloud:google-cloud-logging-logback:0.131.6-alpha'

If you are using SBT, add this to your dependencies:

libraryDependencies += "com.google.cloud" % "google-cloud-logging-logback" % "0.131.6-alpha"

Authentication

See the Authentication section in the base directory's README.

Authorization

The client application making API calls must be granted authorization scopes required for the desired Cloud Logging Logback Appender APIs, and the authenticated principal must have the IAM role(s) required to access GCP resources using the Cloud Logging Logback Appender API calls.

Getting Started

Prerequisites

You will need a Google Cloud Platform Console project with the Cloud Logging Logback Appender API enabled.

Follow these instructions to get your project set up. You will also need to set up the local development environment by installing the Google Cloud Command Line Interface and running the following commands in command line: gcloud auth login and gcloud config set project [YOUR PROJECT ID].

Installation and setup

You'll need to obtain the google-cloud-logging-logback library. See the Quickstart section to add google-cloud-logging-logback as a dependency in your code.

About Cloud Logging Logback Appender

Cloud Logging Logback Appender

See the Cloud Logging Logback Appender client library docs to learn how to use this Cloud Logging Logback Appender Client Library.

Usage

Add the appender to your Logback configuration logback.xml. See Logback filters for information on filtering log output and encoders for information on formatting.

<configuration>
  <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". -->
    <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 
    See [partial_success](https://cloud.google.com/logging/docs/reference/v2/rest/v2/entries/write#body.request_body.FIELDS.partial_success) for more info -->
    <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>

  <root level="info">
    <appender-ref ref="CLOUD" />
  </root>
</configuration>

In your code:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestLogger {
    private final Logger logger = LoggerFactory.getLogger(TestLogger.class);

    public void log(String name) {
        logger.info("This is a test");
    }

    public static void main(String[] args) {
        TestLogger testLogger = new TestLogger();
        testLogger.log("test");
    }
}

Populate log entries with metadata

The library provides multiple ways to enrich log entries with additional information. You can select one or more ways to customize log entries that will be written into Cloud Logging.

Optimize log ingestion

By default, the appender will ingest log entries asynchronously by calling Logging API. Multiple calls may be aggregated before being sent to improve use of API quota and bandwidth. You can set the writeSynchronicity configuration flag to SYNC if they want to ingest log entries synchronously. Note that configuring synchronous ingestion will probably result in performance penalties to your applications. If you plan to deploy your application in one of Google Cloud managed environments (e.g. Cloud Run, Cloud Function or App Engine), you can leverage the support provided by the implicit logging agent and the structured logging feature. To use it, set the redirectToStdout configuration flag to true. This flag instructs the appender to print the log entries to stdout instead of ingesting them using Logging API. The log entries are printed using the structured logging Json format. In result, the logging agent will be responsible for ingesting the logs to Logging API. Note that using the structured logging Json format you cannot control the log name where the logs will be ingested. The logs will be ingested into the project that hosts the environment where your application is running. The configuration logDestinationProjectId will be ignored.

Samples

Samples are in the samples/ directory.

Sample Source Code Try it
Quickstart source code Open in Cloud Shell
Example Enhancer source code Open in Cloud Shell

Troubleshooting

To get help, follow the instructions in the shared Troubleshooting document.

Supported Java Versions

Java 8 or above is required for using this client.

Google's Java client libraries, Google Cloud Client Libraries and Google Cloud API Libraries, follow the Oracle Java SE support roadmap (see the Oracle Java SE Product Releases section).

For new development

In general, new feature development occurs with support for the lowest Java LTS version covered by Oracle's Premier Support (which typically lasts 5 years from initial General Availability). If the minimum required JVM for a given library is changed, it is accompanied by a semver major release.

Java 11 and (in September 2021) Java 17 are the best choices for new development.

Keeping production systems current

Google tests its client libraries with all current LTS versions covered by Oracle's Extended Support (which typically lasts 8 years from initial General Availability).

Legacy support

Google's client libraries support legacy versions of Java runtimes with long term stable libraries that don't receive feature updates on a best efforts basis as it may not be possible to backport all patches.

Google provides updates on a best efforts basis to apps that continue to use Java 7, though apps might need to upgrade to current versions of the library that supports their JVM.

Where to find specific information

The latest versions and the supported Java versions are identified on the individual GitHub repository github.com/GoogleAPIs/java-SERVICENAME and on google-cloud-java.

Versioning

This library follows Semantic Versioning.

It is currently in major version zero (0.y.z), which means that anything may change at any time and the public API should not be considered stable.

Contributing

Contributions to this library are always welcome and highly encouraged.

See CONTRIBUTING for more information how to get started.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See Code of Conduct for more information.

License

Apache 2.0 - See LICENSE for more information.

CI Status

Java Version Status
Java 8 Kokoro CI
Java 8 OSX Kokoro CI
Java 8 Windows Kokoro CI
Java 11 Kokoro CI

Java is a registered trademark of Oracle and/or its affiliates.

java-logging-logback's People

Contributors

0xsage avatar alicejli avatar andreamlin avatar athakor avatar chingor13 avatar cindy-peng avatar codyoss avatar dependabot[bot] avatar dwsupplee avatar elharo avatar garrettjonesgoogle avatar gcf-owl-bot[bot] avatar jabubake avatar jesselovelace avatar kolea2 avatar losalex avatar michaelbausor avatar mpeddada1 avatar neenu1995 avatar neozwu avatar pongad avatar release-please[bot] avatar renovate-bot avatar shinfan avatar suraj-qlogic avatar suztomo avatar tcoffee-google avatar vam-google avatar yihanzhen avatar yoshi-automation avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

java-logging-logback's Issues

Expose a way to flush log appender explicitly

Is your feature request related to a problem? Please describe.
When using com.google.cloud.logging.logback.LoggingAppender, there's currently no way to flush logs explicitly (by calling getLogging().flush()), for example at the end of an HTTP request.

Describe the solution you'd like
Either increase visibility of the getLogging() method to protected, so we can extend LoggingAppender to add a flush() method, or add it directly to LoggingAppender.

Describe alternatives you've considered
A workaround is to set the flushLevel to the lowest, so every log entry is flushed immediately, but this is very inefficient.

Additional context
Here is how I would use this is a ServletFilter (Kotlin code):

	override fun doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain) {
        try {
            chain.doFilter(request, response)
        } finally {
            (LoggerFactory.getILoggerFactory() as LoggerContext).loggerList
                    .map { it.iteratorForAppenders() }
                    .forEach {
                        while (it.hasNext()) {
                            val appender = it.next()
                            when (appender.name) {
                                "CLOUD" -> (appender as LoggingAppender).flush()
                            }
                        }
                    }
        }
    }

Logback: Logging Exceptions with null message cause NullPointerException thrown by LoggingAppender and no log issued

Hello,
we're using the latest java-logging-logback library for our Google Cloud infrastructure with the LogbackAppender that appends on Stackdriver.

<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-logging-logback</artifactId>
<version>0.118.5-alpha</version>
</dependency>

When logging particular Exceptions with a null message the class com.google.cloud.logging.logback.LoggingAppender throws a NullPointerException and the log is not printed on the appender.

Putting the logback configuration in debug mode, on stdout an appender Exception is printed but the previously logged Exception is lost.

Steps to reproduce

  1. Use LoggingAppender and enable debug mode

<configuration debug="true">
...
<appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
<!-- Optional : filter logs at or above a level -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<log>test</log>
<flushLevel>DEBUG</flushLevel>
</appender>

  1. Call logger.error()
logger.error(new NullPointerException());
  1. You will get a NullPointerException from LoggingAppender on stdout and the occurred Exception is not logged

19:33:00,377 |-ERROR in com.google.cloud.logging.logback.LoggingAppender[CLOUD] - Appender [CLOUD] failed to append. java.lang.NullPointerException
at java.lang.NullPointerException
at at java.base/java.lang.StringBuilder.(Unknown Source)
at at com.google.cloud.logging.logback.LoggingAppender.logEntryFor(LoggingAppender.java:294)
at at com.google.cloud.logging.logback.LoggingAppender.append(LoggingAppender.java:231)
at at com.google.cloud.logging.logback.LoggingAppender.append(LoggingAppender.java:79)
at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:48)
at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:422)
at at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:384)
at at ch.qos.logback.classic.Logger.error(Logger.java:539)
at at com.test.logger.impl.Slf4jLogger.error(Slf4jLogger.java:140)
at at com.test.resources.PingResource.ping(PingResource.java:41)
at at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

Where the Issue is located

The issue can be found in the LoggingAppender source, in logEntryFor function (row 294):

  private LogEntry logEntryFor(ILoggingEvent e) {
    StringBuilder payload = new StringBuilder(e.getFormattedMessage()).append('\n');
    writeStack(e.getThrowableProxy(), "", payload);

    Level level = e.getLevel();
    Severity severity = severityFor(level);

At the first row, StringBuilder constructor throws NullPointerException because it expects a not-null string.

Fix suggestion

A way to fix the issue is to instantiate StringBuilder with no parameters then call append() passing the formatted message as append() is null safe.

  private LogEntry logEntryFor(ILoggingEvent e) {
    StringBuilder payload = new StringBuilder().append(e.getFormattedMessage()).append('\n');
    writeStack(e.getThrowableProxy(), "", payload);

    Level level = e.getLevel();
    Severity severity = severityFor(level);

Thank you for your attention!

Dependency Dashboard

This issue contains a list of Renovate updates and their statuses.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.


  • Check this box to trigger a request for Renovate to run again on this repository

Is there a way for us to determine grpc deadline when using google-cloud-logging-logback?

Hi
We are deploying our web application to container based aws fargate. Since it's impossible to install logging agent such as fluentd in host machine in fargate env, we are using google logback library to send our logs to stackdriver.
The problem is when we are under severe load, our ECS tasks dies because of health check fails. We are guessing that sending logs to GCP is bottle-neck for our case. I think somehow this logback library is taking up a lot of threads under severe load though it may be calling grpc server asynchronously. We also see a lot of exceptions in logs such as com.google.api.gax.rpc.DeadlineExceededException. io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 49999915631ns.
Since logback library uses grpc, I was wondering if there's a way for us to reduce this deadline to make sure that this does not lead to outage of our application.

Thanks in advance.

JavaLoggingLogback errors do not appear in StackDriver Error Reporting

The documentation for StackDriver Java Error Reporting states:

Exceptions logged using the Stackdriver Logback Appender ... are automatically reported to the Error Reporting console.

None of our logged errors appear in Error Reporting (not that we have many :-) .

We are using Java 11 in App Engine Standard with version 0.116.0-alpha of this google-cloud-logging-logback appender. Our logback.xml configuration is:

<appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
  <log>application.log</log>
  <resourceType>gae_app</resourceType> <!-- Optional : default global -->
  <flushLevel>WARN</flushLevel> <!-- Optional : default ERROR -->
</appender>

We did a quick experiment using Formatting errors in Stackdriver Logging and were able to get errors reported by changing the appender to submit JSON and add the @type value for errors:

private LogEntry logEntryFor(ILoggingEvent e) {
    StringBuilder payload = new StringBuilder(e.getFormattedMessage()).append('\n');
    writeStack(e.getThrowableProxy(), "", payload);

    Level level = e.getLevel();
    Severity severity = severityFor(level);

    Map<String, Object> jsonContent = new HashMap<String, Object>();
    jsonContent.put("message", payload.toString().trim());
    if (severity == Severity.ERROR)
      jsonContent.put("@type", "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent");

    LogEntry.Builder builder =
        LogEntry.newBuilder(Payload.JsonPayload.of(jsonContent))
            .setTimestamp(e.getTimeStamp())
            .setSeverity(severity);

...

Having logged errors appear in Error Reporting is important for any production server.

Cloud Logging: High Memory Usage with Logging Logback

Environment details

GAE Java 11 Runtime

I've added the following dependency:

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-logging-logback</artifactId>
    <version>0.118.0-alpha</version>
</dependency>

Steps to reproduce

I'm preparing to migrate my GAE Java 8 runtime app to Java 11 runtime. I deployed a single servlet test app to Java 11 runtime and included the above mentioned dependency for Logging Logback.

I had 2 observations:

  1. The memory usage of my app shoots up by about 100MB+ (130MB -> 230MB+).
  2. It takes much longer to deploy the application (1.5 min -> 7 min).

Are these expected or am I missing something?

Synthesis failed for java-logging-logback

Hello! Autosynth couldn't regenerate java-logging-logback. 💔

Here's the output from running synth.py:

Cloning into 'working_repo'...
Switched to a new branch 'autosynth'
Cloning into '/tmpfs/tmp/tmp7nd8wov6/synthtool'...
Switched to branch 'autosynth-self'
Note: checking out 'd05f957952bec095fb1ebc9aa768eca3a8be3260'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at d05f957 chore(deps): update dependency com.google.cloud:libraries-bom to v5.3.0 (#86)
Note: checking out '52638600f387deb98efb5f9c85fec39e82aa9052'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 5263860 build(java): set GOOGLE_CLOUD_PROJECT env for samples/integration tests (#484)
Switched to a new branch 'autosynth-self-1'
2020-04-30 14:02:48 [INFO] Running synthtool
2020-04-30 14:02:48 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'synth.metadata', 'synth.py', '--']
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "/tmpfs/src/github/synthtool/synthtool/__init__.py", line 21, in <module>
    from synthtool import update_check
  File "/tmpfs/src/github/synthtool/synthtool/update_check.py", line 19, in <module>
    import packaging.version
ModuleNotFoundError: No module named 'packaging'
2020-04-30 14:02:48 [ERROR] Synthesis failed
HEAD is now at d05f957 chore(deps): update dependency com.google.cloud:libraries-bom to v5.3.0 (#86)
Switched to branch 'autosynth-self'
Note: checking out 'd05f957952bec095fb1ebc9aa768eca3a8be3260'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at d05f957 chore(deps): update dependency com.google.cloud:libraries-bom to v5.3.0 (#86)
Previous HEAD position was 5263860 build(java): set GOOGLE_CLOUD_PROJECT env for samples/integration tests (#484)
HEAD is now at 6b685a2 fix: synthtool path (#515)
Switched to a new branch 'autosynth-16'
2020-04-30 14:02:48 [INFO] Running synthtool
2020-04-30 14:02:48 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'synth.metadata', 'synth.py', '--']
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "/tmpfs/src/github/synthtool/synthtool/__init__.py", line 21, in <module>
    from synthtool import update_check
  File "/tmpfs/src/github/synthtool/synthtool/update_check.py", line 19, in <module>
    import packaging.version
ModuleNotFoundError: No module named 'packaging'
2020-04-30 14:02:49 [ERROR] Synthesis failed
HEAD is now at d05f957 chore(deps): update dependency com.google.cloud:libraries-bom to v5.3.0 (#86)
Switched to branch 'autosynth'
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 576, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 457, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 566, in _inner_main
    commit_count = synthesize_loop(x, multiple_prs, change_pusher, synthesizer)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 352, in synthesize_loop
    synthesize_inner_loop(toolbox, synthesizer)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 362, in synthesize_inner_loop
    synthesizer, len(toolbox.versions) - 1
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 259, in synthesize_version_in_new_branch
    synthesizer.synthesize(self.environ)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 115, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'synth.metadata', 'synth.py', '--']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Synthesis failed for java-logging-logback

Hello! Autosynth couldn't regenerate java-logging-logback. 💔

Here's the output from running synth.py:

Cloning into 'working_repo'...
Switched to branch 'autosynth'
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.1/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.1/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/git/autosynth/autosynth/synth.py", line 256, in <module>
    main()
  File "/tmpfs/src/git/autosynth/autosynth/synth.py", line 196, in main
    last_synth_commit_hash = get_last_metadata_commit(args.metadata_path)
  File "/tmpfs/src/git/autosynth/autosynth/synth.py", line 149, in get_last_metadata_commit
    text=True,
  File "/home/kbuilder/.pyenv/versions/3.6.1/lib/python3.6/subprocess.py", line 403, in run
    with Popen(*popenargs, **kwargs) as process:
TypeError: __init__() got an unexpected keyword argument 'text'

Google internal developers can see the full log here.

logging.logback.LoggingAppenderTest: testFlushLevelConfigUpdatesLoggingFlushSeverity failed

This test failed!

To configure my behavior, see the Build Cop Bot documentation.

If I'm commenting on this issue too often, add the buildcop: quiet label and
I will stop commenting.


commit: e7753e6
buildURL: Build Status, Sponge
status: failed

Test output
value of: next()
expected: …st, levelValue=30000}, operation=null, t…
but was : …st, levelValue=30000, logging.googleapis.trace=abc}, operation=null, t…
	at com.google.cloud.logging.logback.LoggingAppenderTest.testFlushLevelConfigUpdatesLoggingFlushSeverity(LoggingAppenderTest.java:112)

google-cloud-logging-logback: no log entries (except replay warning) are printed

We are using google-cloud-logging-logback but unfortunately no log files are printed. We are running on Google Kubernetes Engine and are using Stackdriver.
I have created a PoC at https://github.com/CarloWakefield/gcp-logging-poc.

We are using this Maven dependency:

        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-logging-logback</artifactId>
            <version>0.108.0-alpha</version>
        </dependency>

This is our logback.xml:

<configuration>
    <appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
    </appender>
    <root level="debug">
        <appender-ref ref="CLOUD"/>
    </root>
</configuration>

Every second a log statement should be printed.
However, we only receive this output:

2019-09-13 18:03:13.900 CEST
SLF4J: A number (105) of logging calls during the initialization phase have been intercepted and are
2019-09-13 18:03:13.900 CEST
SLF4J: now being replayed. These are subject to the filtering rules of the underlying logging system.
2019-09-13 18:03:13.900 CEST
SLF4J: See also http://www.slf4j.org/codes.html#replay

Is this a bug? Or are we doing something wrong?

Logs from GKE containers use the legacy resource types

Environment details

  1. Specify the API at the beginning of the title. For example, "BigQuery: ...").
    General, Core, and Other are also allowed as types
  2. OS type and version: Docker container - adoptopenjdk:11-jre-hotspot
  3. Java version: 11
  4. logging-logback version(s): 0.118.0-alpha

Steps to reproduce

  1. Run a container in a GKE cluster configured to use "Kubernetes Operations Logging" which logs using google-cloud-logging-logback
  2. The logs are created using the legacy resource types.

Expexted:

resource: {
  type: "k8s_container"
  labels: {
    cluster_name: "my-cluster"
    project_id: "my-project-XXXXXX"
    pod_name:  "my-pod-XXXXXXXXX-XXXXX"
    location:  "xxx-xxx-x"
    container_name: "my-container"
    namespace_name: "my-namespace"
  }
}

Actual:

resource: {
  type: "container"
  labels: {
    pod_id: "my-pod-XXXXXXXXX-XXXXX"
    namespace_id: ""
    project_id: "my-project-XXXXXX"
    instance_id: "XXX..."
    zone: "xxx-xxx-x"
    cluster_name: "my-cluster"
    container_name: ""
  }
}

Passing logback properties to cloud logging

I would like to use properties defined in http://logback.qos.ch/manual/layouts.html within my resulting json logging. My idea is using something like Enhancer to pass the properties, eg.

class CloudLogEnhancer : LoggingEnhancer {
    override fun enhanceLogEntry(logEntry: LogEntry.Builder) {
        // Outputs the line number from where the logging request was issued.
        logEntry.addLabel("line", context.get("%{line}"))
        // Outputs the method name where the logging request was issued.
        logEntry.addLabel("method", context.get("%{method}"))
    }
}

Is there a way to achieve this?

Better support for modyfing log message

Thanks for stopping by to let us know something could be better!

PLEASE READ: If you have a support contract with Google, please create an issue in the support console instead of filing on GitHub. This will ensure a timely response.

Is your feature request related to a problem? Please describe.

Hi! I have a use case where I'd like to mask sensitive information from appearing in the logs in one central place. With basic console logback appender it's possible to achieve this by using encoder property, but this is not available in GCP logger appender. So I've tried to achieve this by using LoggingEventEnhancer in a quick and naive approach:

@Override
public void enhanceLogEntry(Builder builder, ILoggingEvent e) {
    var maskedMessage = maskMessage(e.getFormattedMessage());
    var jsonContent = Map.of("message", maskedMessage.trim());
    builder.setPayload(Payload.JsonPayload.of(jsonContent));
}

which would be fine, but it seems the library adds some additional fields to the payload on certain conditions:

if (severity == Severity.ERROR) {
jsonContent.put("@type", TYPE);
}

So in order to not overwrite these values and any possible values added with future updates I've ended up with this workaround:

  @Override
  public void enhanceLogEntry(Builder builder, ILoggingEvent event) {
    var payloadData = getInitialPayloadData(builder);
    var maskedMessage = maskMessage(event.getFormattedMessage());
    payloadData.put("message", maskedMessage.trim());
    builder.setPayload(Payload.JsonPayload.of(payloadData));
  }

  private Map<String, Object> getInitialPayloadData(Builder builder) {
    var originalPayload = builder.build().getPayload();
    if (originalPayload.getType() == Type.JSON) {
      // extract original payload data as the data map might contain not only the message entry
      var originalPayloadData = ((Payload.JsonPayload) originalPayload).getDataAsMap();
      return new HashMap<>(originalPayloadData);
    }
    return new HashMap<>();
  }

But this feels a bit hacky and inefficient (building before retrieving the payload, casting)...

So I was wondering if it would be possible to improve the library for this use case, or maybe there's something there already that I'm not aware of?

Describe the solution you'd like

Maybe not having additional properties in the payload, so they wouldn't get overwritten, or explicit builder method to only set the message.

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

Edited/Blocked

These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.


  • Check this box to trigger a request for Renovate to run again on this repository

Dependency Dashboard

This issue contains a list of Renovate updates and their statuses.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

  • deps: update dependency com.google.cloud:google-cloud-logging to v1.102.0
  • chore(deps): update dependency com.google.cloud:libraries-bom to v10
  • deps: update dependency org.easymock:easymock to v4
  • Check this option to rebase all the above open PRs at once

  • Check this box to trigger a request for Renovate to run again on this repository

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Edited/Blocked

These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

github-actions
.github/workflows/auto-release.yaml
  • actions/github-script v7
.github/workflows/unmanaged_dependency_check.yaml
  • actions/checkout v4
  • actions/setup-java v4
maven
pom.xml
  • com.google.cloud:sdk-platform-java-config 3.30.1
  • ch.qos.logback:logback-classic 1.2.13
  • ch.qos.logback:logback-core 1.2.13
  • com.google.cloud:google-cloud-logging 3.17.2
  • org.slf4j:slf4j-api 1.7.36
  • junit:junit 4.13.2
  • org.easymock:easymock 5.2.0
  • com.google.truth:truth 1.4.2
  • org.apache.maven.plugins:maven-project-info-reports-plugin 3.5.0
samples/install-without-bom/pom.xml
  • com.google.cloud.samples:shared-configuration 1.2.0
  • com.google.cloud:google-cloud-logging-logback 0.131.6-alpha
  • junit:junit 4.13.2
  • com.google.truth:truth 1.4.2
  • org.codehaus.mojo:build-helper-maven-plugin 3.5.0
samples/pom.xml
  • com.google.cloud.samples:shared-configuration 1.2.0
  • org.apache.maven.plugins:maven-deploy-plugin 3.1.2
  • org.sonatype.plugins:nexus-staging-maven-plugin 1.6.13
samples/snapshot/pom.xml
  • com.google.cloud.samples:shared-configuration 1.2.0
  • com.google.cloud:google-cloud-logging-logback 0.131.7-alpha
  • junit:junit 4.13.2
  • com.google.truth:truth 1.4.2
  • org.codehaus.mojo:build-helper-maven-plugin 3.5.0
samples/snippets/pom.xml
  • com.google.cloud.samples:shared-configuration 1.2.0
  • com.google.cloud:libraries-bom 26.39.0
  • junit:junit 4.13.2
  • com.google.truth:truth 1.4.2
regex
.kokoro/presubmit/graalvm-native-17.cfg
  • com.google.cloud:sdk-platform-java-config 3.30.1
.kokoro/presubmit/graalvm-native.cfg
  • com.google.cloud:sdk-platform-java-config 3.30.1
.github/workflows/unmanaged_dependency_check.yaml
  • com.google.cloud:sdk-platform-java-config 3.30.1

  • Check this box to trigger a request for Renovate to run again on this repository

logging.logback.LoggingAppenderTest: testFilterLogsOnlyLogsAtOrAboveLogLevel failed

This test failed!

To configure my behavior, see the Build Cop Bot documentation.

If I'm commenting on this issue too often, add the buildcop: quiet label and
I will stop commenting.


commit: e7753e6
buildURL: Build Status, Sponge
status: failed

Test output
value of: next()
expected: …st, levelValue=40000}, operation=null, t…
but was : …st, levelValue=40000, logging.googleapis.trace=abc}, operation=null, t…
	at com.google.cloud.logging.logback.LoggingAppenderTest.testFilterLogsOnlyLogsAtOrAboveLogLevel(LoggingAppenderTest.java:153)

google-cloud-logging-logback gives com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V when it is used with firebase-admin:6.0.0

Thanks for stopping by to let us know something could be better!

I have tried all possible ways. Your googleapis/google-cloud-java#3099 was closed without giving any resolution.

If you are still having issues, please be sure to include as much information as possible:

Environment details

  1. Specify the API at the beginning of the title (for example, "BigQuery: ...")
    Stackdriver Logging
  2. OS type and version: Windows 10 64bit
  3. Java version: 1.8.0_211
  4. google-cloud-logging-logback: almost all versions, when used with firebase-admin-6.0.0
    5- Payara 5.191 web

Steps to reproduce

  1. Add firebase admin version 6.0.0
  2. Add any version of google-cloud-logging-logback
    3- Add the cloud appender.
    4- Run the web app in Payara 5.191. Dont doubt Payara here. Guava of Payara is anyways not being used.

Code example

// example

Stack trace

Any relevant stacktrace here.
Severe:   Error invoking ServletContainerInitializer ch.qos.logback.classic.servlet.LogbackServletContainerInitializer
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at com.google.api.gax.batching.NonBlockingSemaphore.checkNotNegative(NonBlockingSemaphore.java:41)
	at com.google.api.gax.batching.NonBlockingSemaphore.<init>(NonBlockingSemaphore.java:45)
	at com.google.api.gax.batching.FlowController.<init>(FlowController.java:170)
	at com.google.api.gax.rpc.BatchingCallSettings.<init>(BatchingCallSettings.java:70)
	at com.google.api.gax.rpc.BatchingCallSettings.<init>(BatchingCallSettings.java:46)
	at com.google.api.gax.rpc.BatchingCallSettings$Builder.build(BatchingCallSettings.java:146)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings.<init>(LoggingServiceV2StubSettings.java:227)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings$Builder.build(LoggingServiceV2StubSettings.java:690)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings$Builder.build(LoggingServiceV2StubSettings.java:473)
	at com.google.api.gax.rpc.ClientSettings.<init>(ClientSettings.java:59)
	at com.google.cloud.logging.v2.LoggingSettings.<init>(LoggingSettings.java:165)
	at com.google.cloud.logging.v2.LoggingSettings$Builder.build(LoggingSettings.java:241)
	at com.google.cloud.logging.spi.v2.GrpcLoggingRpc.<init>(GrpcLoggingRpc.java:111)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:64)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:58)
	at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:512)
	at com.google.cloud.logging.LoggingOptions.getLoggingRpcV2(LoggingOptions.java:134)
	at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:108)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:46)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:41)
	at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:499)
	at com.google.cloud.logging.logback.LoggingAppender.getLogging(LoggingAppender.java:221)
	at com.google.cloud.logging.logback.LoggingAppender.start(LoggingAppender.java:183)
	at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90)
	at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309)
	at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193)
	at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179)
	at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
	at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
	at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
	at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
	at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
	at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
	at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
	at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
	at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addStatus(StatusViaSLF4JLoggerFactory.java:32)
	at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo(StatusViaSLF4JLoggerFactory.java:20)
	at ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup(LogbackServletContainerInitializer.java:32)
	at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5825)
	at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:737)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5722)
	at com.sun.enterprise.web.WebModule.start(WebModule.java:618)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:956)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:939)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1884)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1587)
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   Startup of context /aawp-rest failed due to previous errors
Severe:   Exception during cleanup after start failed
org.apache.catalina.LifecycleException: Manager has not yet been started
	at org.apache.catalina.session.StandardManager.stop(StandardManager.java:868)
	at org.apache.catalina.core.StandardContext.stop(StandardContext.java:5927)
	at com.sun.enterprise.web.WebModule.stop(WebModule.java:647)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5743)
	at com.sun.enterprise.web.WebModule.start(WebModule.java:618)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:956)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:939)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1884)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1587)
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5747)
	at com.sun.enterprise.web.WebModule.start(WebModule.java:618)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:956)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:939)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1884)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1587)
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5833)
	at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:737)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5722)
	... 48 more
Caused by: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at com.google.api.gax.batching.NonBlockingSemaphore.checkNotNegative(NonBlockingSemaphore.java:41)
	at com.google.api.gax.batching.NonBlockingSemaphore.<init>(NonBlockingSemaphore.java:45)
	at com.google.api.gax.batching.FlowController.<init>(FlowController.java:170)
	at com.google.api.gax.rpc.BatchingCallSettings.<init>(BatchingCallSettings.java:70)
	at com.google.api.gax.rpc.BatchingCallSettings.<init>(BatchingCallSettings.java:46)
	at com.google.api.gax.rpc.BatchingCallSettings$Builder.build(BatchingCallSettings.java:146)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings.<init>(LoggingServiceV2StubSettings.java:227)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings$Builder.build(LoggingServiceV2StubSettings.java:690)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings$Builder.build(LoggingServiceV2StubSettings.java:473)
	at com.google.api.gax.rpc.ClientSettings.<init>(ClientSettings.java:59)
	at com.google.cloud.logging.v2.LoggingSettings.<init>(LoggingSettings.java:165)
	at com.google.cloud.logging.v2.LoggingSettings$Builder.build(LoggingSettings.java:241)
	at com.google.cloud.logging.spi.v2.GrpcLoggingRpc.<init>(GrpcLoggingRpc.java:111)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:64)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:58)
	at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:512)
	at com.google.cloud.logging.LoggingOptions.getLoggingRpcV2(LoggingOptions.java:134)
	at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:108)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:46)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:41)
	at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:499)
	at com.google.cloud.logging.logback.LoggingAppender.getLogging(LoggingAppender.java:221)
	at com.google.cloud.logging.logback.LoggingAppender.start(LoggingAppender.java:183)
	at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90)
	at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309)
	at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193)
	at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179)
	at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
	at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
	at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
	at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
	at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
	at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
	at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
	at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
	at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addStatus(StatusViaSLF4JLoggerFactory.java:32)
	at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo(StatusViaSLF4JLoggerFactory.java:20)
	at ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup(LogbackServletContainerInitializer.java:32)
	at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5825)
	... 50 more

Warning:   java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:960)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:939)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1884)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1587)
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   Exception while invoking class com.sun.enterprise.web.WebApplication start method
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:136)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   Exception during lifecycle processing
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:136)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   Exception while loading the app
Severe:   Undeployment failed for context /aawp-rest
Severe:   Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
Info:   Clustered CDI Event bus initialized
Info:   Initializing Soteria 1.1-b01 for context '/aawp-rest'
Severe:   Error invoking ServletContainerInitializer ch.qos.logback.classic.servlet.LogbackServletContainerInitializer
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at com.google.api.gax.batching.NonBlockingSemaphore.checkNotNegative(NonBlockingSemaphore.java:41)
	at com.google.api.gax.batching.NonBlockingSemaphore.<init>(NonBlockingSemaphore.java:45)
	at com.google.api.gax.batching.FlowController.<init>(FlowController.java:170)
	at com.google.api.gax.rpc.BatchingCallSettings.<init>(BatchingCallSettings.java:70)
	at com.google.api.gax.rpc.BatchingCallSettings.<init>(BatchingCallSettings.java:46)
	at com.google.api.gax.rpc.BatchingCallSettings$Builder.build(BatchingCallSettings.java:146)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings.<init>(LoggingServiceV2StubSettings.java:227)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings$Builder.build(LoggingServiceV2StubSettings.java:690)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings$Builder.build(LoggingServiceV2StubSettings.java:473)
	at com.google.api.gax.rpc.ClientSettings.<init>(ClientSettings.java:59)
	at com.google.cloud.logging.v2.LoggingSettings.<init>(LoggingSettings.java:165)
	at com.google.cloud.logging.v2.LoggingSettings$Builder.build(LoggingSettings.java:241)
	at com.google.cloud.logging.spi.v2.GrpcLoggingRpc.<init>(GrpcLoggingRpc.java:111)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:64)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:58)
	at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:512)
	at com.google.cloud.logging.LoggingOptions.getLoggingRpcV2(LoggingOptions.java:134)
	at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:108)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:46)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:41)
	at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:499)
	at com.google.cloud.logging.logback.LoggingAppender.getLogging(LoggingAppender.java:221)
	at com.google.cloud.logging.logback.LoggingAppender.start(LoggingAppender.java:183)
	at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90)
	at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309)
	at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193)
	at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179)
	at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
	at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
	at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
	at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
	at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
	at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
	at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
	at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
	at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addStatus(StatusViaSLF4JLoggerFactory.java:32)
	at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo(StatusViaSLF4JLoggerFactory.java:20)
	at ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup(LogbackServletContainerInitializer.java:32)
	at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5825)
	at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:737)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5722)
	at com.sun.enterprise.web.WebModule.start(WebModule.java:618)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:956)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:939)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1884)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1587)
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   Startup of context /aawp-rest failed due to previous errors
Severe:   Exception during cleanup after start failed
org.apache.catalina.LifecycleException: Manager has not yet been started
	at org.apache.catalina.session.StandardManager.stop(StandardManager.java:868)
	at org.apache.catalina.core.StandardContext.stop(StandardContext.java:5927)
	at com.sun.enterprise.web.WebModule.stop(WebModule.java:647)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5743)
	at com.sun.enterprise.web.WebModule.start(WebModule.java:618)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:956)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:939)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1884)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1587)
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5747)
	at com.sun.enterprise.web.WebModule.start(WebModule.java:618)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:956)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:939)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1884)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1587)
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5833)
	at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:737)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:5722)
	... 48 more
Caused by: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at com.google.api.gax.batching.NonBlockingSemaphore.checkNotNegative(NonBlockingSemaphore.java:41)
	at com.google.api.gax.batching.NonBlockingSemaphore.<init>(NonBlockingSemaphore.java:45)
	at com.google.api.gax.batching.FlowController.<init>(FlowController.java:170)
	at com.google.api.gax.rpc.BatchingCallSettings.<init>(BatchingCallSettings.java:70)
	at com.google.api.gax.rpc.BatchingCallSettings.<init>(BatchingCallSettings.java:46)
	at com.google.api.gax.rpc.BatchingCallSettings$Builder.build(BatchingCallSettings.java:146)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings.<init>(LoggingServiceV2StubSettings.java:227)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings$Builder.build(LoggingServiceV2StubSettings.java:690)
	at com.google.cloud.logging.v2.stub.LoggingServiceV2StubSettings$Builder.build(LoggingServiceV2StubSettings.java:473)
	at com.google.api.gax.rpc.ClientSettings.<init>(ClientSettings.java:59)
	at com.google.cloud.logging.v2.LoggingSettings.<init>(LoggingSettings.java:165)
	at com.google.cloud.logging.v2.LoggingSettings$Builder.build(LoggingSettings.java:241)
	at com.google.cloud.logging.spi.v2.GrpcLoggingRpc.<init>(GrpcLoggingRpc.java:111)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:64)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:58)
	at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:512)
	at com.google.cloud.logging.LoggingOptions.getLoggingRpcV2(LoggingOptions.java:134)
	at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:108)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:46)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:41)
	at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:499)
	at com.google.cloud.logging.logback.LoggingAppender.getLogging(LoggingAppender.java:221)
	at com.google.cloud.logging.logback.LoggingAppender.start(LoggingAppender.java:183)
	at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90)
	at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309)
	at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193)
	at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179)
	at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110)
	at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
	at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
	at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
	at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
	at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
	at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
	at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
	at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
	at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addStatus(StatusViaSLF4JLoggerFactory.java:32)
	at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo(StatusViaSLF4JLoggerFactory.java:20)
	at ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup(LogbackServletContainerInitializer.java:32)
	at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5825)
	... 50 more

Warning:   java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:960)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:939)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1884)
	at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1587)
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   Exception while invoking class com.sun.enterprise.web.WebApplication start method
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:136)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   Exception during lifecycle processing
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
	at com.sun.enterprise.web.WebApplication.start(WebApplication.java:136)
	at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
	at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:294)
	at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:357)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:530)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:542)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:557)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:553)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:552)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:583)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:574)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1483)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:119)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1865)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1741)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:564)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:251)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
	at java.lang.Thread.run(Thread.java:748)

Severe:   Exception while loading the app
Severe:   Undeployment failed for context /aawp-rest
Severe:   Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
Info:   Server shutdown initiated
Info:   FileMonitoring shutdown
Info:   JMXStartupService: Stopped JMXConnectorServer: null
Info:   JMXStartupService and JMXConnectors have been shut down.
Info:   Hazelcast Instance Unbound from JNDI at payara/Hazelcast
Info:   JSR107 Caching Provider Unbound from JNDI at payara/CachingProvider
Info:   JSR107 Cache Manager Unbound from JNDI at payara/CacheManager
Info:   Shutdown Hazelcast
Info:   JdbcRuntimeExtension,  getAllSystemRAResourcesAndPools = [GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcResource, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool, GlassFishConfigBean.org.glassfish.jdbc.config.JdbcConnectionPool]
Completed shutdown of Log manager service
Info:   Shutdown procedure finished
Completed shutdown of GlassFish runtime

#### Dependency Tree
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building aawp-rest 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.6:tree (default-cli) @ aawp-rest ---
[INFO] com.fastserve.aawp:aawp-rest:war:1.0.0-SNAPSHOT
[INFO] +- junit:junit:jar:4.12:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- com.fastserve.aawp:aawp-biz-impl:jar:1.0.0-SNAPSHOT:compile
[INFO] |  +- com.fastserve.aawp:aawp-biz-interfaces:jar:1.0.0-SNAPSHOT:compile
[INFO] |  |  \- org.projectlombok:lombok:jar:1.18.2:compile
[INFO] |  +- com.fastserve.aawp:common-impl:jar:1.0.0-SNAPSHOT:compile
[INFO] |  +- com.fastserve.aawp:aawp-cb-impl:jar:1.0.0-SNAPSHOT:compile
[INFO] |  |  \- com.eclatian.core:cb-framework:jar:1.0.0-SNAPSHOT:compile
[INFO] |  |     \- com.couchbase.client:java-client:jar:2.7.2:compile
[INFO] |  |        \- com.couchbase.client:core-io:jar:1.7.2:compile
[INFO] |  |           +- io.reactivex:rxjava:jar:1.3.8:compile
[INFO] |  |           \- io.opentracing:opentracing-api:jar:0.31.0:compile
[INFO] |  +- com.eclatian.core:core-util:jar:1.0.0-SNAPSHOT:compile
[INFO] |  +- com.razorpay:razorpay-java:jar:1.3.8:compile
[INFO] |  |  +- com.squareup.okhttp3:okhttp:jar:3.10.0:compile
[INFO] |  |  |  \- com.squareup.okio:okio:jar:1.14.0:compile
[INFO] |  |  +- com.squareup.okhttp3:logging-interceptor:jar:3.10.0:compile
[INFO] |  |  +- commons-codec:commons-codec:jar:1.11:compile
[INFO] |  |  \- org.apache.commons:commons-text:jar:1.3:compile
[INFO] |  |     \- org.apache.commons:commons-lang3:jar:3.7:compile
[INFO] |  \- org.json:json:jar:20160810:compile
[INFO] +- com.fastserve.aawp:aawp-facade-interfaces:jar:1.0.0-SNAPSHOT:compile
[INFO] |  \- com.eclatian.core:core-data:jar:1.0.0-SNAPSHOT:compile
[INFO] +- io.swagger:swagger-jersey2-jaxrs:jar:1.5.10:compile
[INFO] |  +- io.swagger:swagger-jaxrs:jar:1.5.10:compile
[INFO] |  |  +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.4.5:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-core:jar:2.4.5:compile
[INFO] |  |  |  \- org.yaml:snakeyaml:jar:1.12:compile
[INFO] |  |  +- com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.4.5:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.4.5:compile
[INFO] |  |  |  +- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.4.5:compile
[INFO] |  |  |  \- org.codehaus.woodstox:stax2-api:jar:3.1.4:compile
[INFO] |  |  +- io.swagger:swagger-core:jar:1.5.10:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.4.5:compile
[INFO] |  |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.4.5:compile
[INFO] |  |  |  |  \- joda-time:joda-time:jar:2.2:compile
[INFO] |  |  |  +- io.swagger:swagger-models:jar:1.5.10:compile
[INFO] |  |  |  |  \- io.swagger:swagger-annotations:jar:1.5.10:compile
[INFO] |  |  |  \- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] |  |  +- org.reflections:reflections:jar:0.9.10:compile
[INFO] |  |  |  +- org.javassist:javassist:jar:3.19.0-GA:compile
[INFO] |  |  |  \- com.google.code.findbugs:annotations:jar:2.0.1:compile
[INFO] |  |  \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.4.5:compile
[INFO] |  |     \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.4.5:compile
[INFO] |  +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.1:compile
[INFO] |  |  +- org.glassfish.hk2.external:javax.inject:jar:2.2.0-b10:compile
[INFO] |  |  +- org.glassfish.jersey.core:jersey-server:jar:2.1:compile
[INFO] |  |  |  +- org.glassfish.jersey.core:jersey-client:jar:2.1:compile
[INFO] |  |  |  +- org.glassfish.hk2:hk2-api:jar:2.2.0-b10:compile
[INFO] |  |  |  |  \- org.glassfish.hk2:hk2-utils:jar:2.2.0-b10:compile
[INFO] |  |  |  \- org.glassfish.hk2:hk2-locator:jar:2.2.0-b10:compile
[INFO] |  |  |     +- org.glassfish.hk2.external:asm-all-repackaged:jar:2.2.0-b10:compile
[INFO] |  |  |     \- org.glassfish.hk2.external:cglib:jar:2.2.0-b10:compile
[INFO] |  |  +- org.glassfish.jersey.core:jersey-common:jar:2.1:compile
[INFO] |  |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
[INFO] |  |  \- javax.ws.rs:javax.ws.rs-api:jar:2.0:compile
[INFO] |  \- org.glassfish.jersey.media:jersey-media-multipart:jar:2.1:compile
[INFO] |     \- org.jvnet.mimepull:mimepull:jar:1.8:compile
[INFO] +- com.fastserve.aawp:aawp-fs-impl:jar:1.0.0-SNAPSHOT:compile
[INFO] |  \- com.eclatian.core:core-exception:jar:1.0.0-SNAPSHOT:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] +- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] +- com.google.cloud:google-cloud-logging-logback:jar:0.80.0-alpha:compile
[INFO] |  +- com.google.cloud:google-cloud-logging:jar:1.62.0:compile
[INFO] |  |  +- com.google.cloud:google-cloud-core:jar:1.62.0:compile
[INFO] |  |  |  +- com.google.api:gax:jar:1.38.0:compile
[INFO] |  |  |  +- com.google.protobuf:protobuf-java-util:jar:3.6.1:compile
[INFO] |  |  |  \- com.google.api.grpc:proto-google-iam-v1:jar:0.12.0:compile
[INFO] |  |  +- com.google.cloud:google-cloud-core-grpc:jar:1.62.0:compile
[INFO] |  |  |  +- com.google.protobuf:protobuf-java:jar:3.6.1:compile
[INFO] |  |  |  +- io.grpc:grpc-protobuf:jar:1.17.1:compile
[INFO] |  |  |  |  \- io.grpc:grpc-protobuf-lite:jar:1.17.1:compile
[INFO] |  |  |  \- io.grpc:grpc-context:jar:1.17.1:compile
[INFO] |  |  +- com.google.api:gax-grpc:jar:1.38.0:compile
[INFO] |  |  |  +- org.threeten:threetenbp:jar:1.3.3:compile
[INFO] |  |  |  \- io.grpc:grpc-alts:jar:1.17.1:compile
[INFO] |  |  |     \- io.grpc:grpc-grpclb:jar:1.17.1:runtime
[INFO] |  |  +- com.google.api.grpc:proto-google-cloud-logging-v2:jar:0.45.0:compile
[INFO] |  |  +- io.grpc:grpc-netty-shaded:jar:1.17.1:compile
[INFO] |  |  |  \- io.grpc:grpc-core:jar:1.17.1:compile (version selected from constraint [1.17.1,1.17.1])
[INFO] |  |  |     \- io.opencensus:opencensus-contrib-grpc-metrics:jar:0.17.0:compile
[INFO] |  |  +- io.grpc:grpc-stub:jar:1.17.1:compile
[INFO] |  |  +- io.grpc:grpc-auth:jar:1.17.1:compile
[INFO] |  |  \- com.google.api.grpc:proto-google-common-protos:jar:1.12.0:compile
[INFO] |  \- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO] +- com.google.code.gson:gson:jar:2.1:compile
[INFO] +- javax:javaee-api:jar:8.0:provided
[INFO] |  \- com.sun.mail:javax.mail:jar:1.6.0:provided
[INFO] |     \- javax.activation:activation:jar:1.1:provided
[INFO] +- org.slf4j:slf4j-api:jar:1.7.26:compile
[INFO] +- com.google.firebase:firebase-admin:jar:6.0.0:compile
[INFO] |  +- com.google.api-client:google-api-client:jar:1.23.0:compile
[INFO] |  |  +- com.google.oauth-client:google-oauth-client:jar:1.23.0:compile
[INFO] |  |  \- com.google.http-client:google-http-client-jackson2:jar:1.23.0:compile
[INFO] |  +- com.google.api-client:google-api-client-gson:jar:1.23.0:compile
[INFO] |  |  \- com.google.http-client:google-http-client-gson:jar:1.23.0:compile
[INFO] |  +- com.google.http-client:google-http-client:jar:1.23.0:compile
[INFO] |  |  \- org.apache.httpcomponents:httpclient:jar:4.0.1:compile
[INFO] |  |     +- org.apache.httpcomponents:httpcore:jar:4.0.1:compile
[INFO] |  |     \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] |  +- com.google.api:api-common:jar:1.2.0:compile
[INFO] |  +- com.google.auth:google-auth-library-oauth2-http:jar:0.8.0:compile
[INFO] |  |  \- com.google.auth:google-auth-library-credentials:jar:0.8.0:compile
[INFO] |  +- com.google.cloud:google-cloud-storage:jar:1.27.0:compile
[INFO] |  |  +- com.google.cloud:google-cloud-core-http:jar:1.27.0:compile
[INFO] |  |  |  +- com.google.http-client:google-http-client-appengine:jar:1.23.0:compile
[INFO] |  |  |  +- com.google.http-client:google-http-client-jackson:jar:1.23.0:compile
[INFO] |  |  |  |  \- org.codehaus.jackson:jackson-core-asl:jar:1.9.11:compile
[INFO] |  |  |  +- com.google.api:gax-httpjson:jar:0.40.0:compile
[INFO] |  |  |  +- io.opencensus:opencensus-api:jar:0.11.1:compile
[INFO] |  |  |  \- io.opencensus:opencensus-contrib-http-util:jar:0.11.1:compile
[INFO] |  |  \- com.google.apis:google-api-services-storage:jar:v1-rev114-1.23.0:compile
[INFO] |  +- com.google.cloud:google-cloud-firestore:jar:0.45.0-beta:compile
[INFO] |  |  +- com.google.api.grpc:proto-google-cloud-firestore-v1beta1:jar:0.10.0:compile
[INFO] |  |  \- com.google.auto.value:auto-value:jar:1.4:compile
[INFO] |  +- io.netty:netty-codec-http:jar:4.1.22.Final:compile
[INFO] |  |  \- io.netty:netty-codec:jar:4.1.22.Final:compile
[INFO] |  +- io.netty:netty-handler:jar:4.1.22.Final:compile
[INFO] |  |  \- io.netty:netty-buffer:jar:4.1.22.Final:compile
[INFO] |  |     \- io.netty:netty-common:jar:4.1.22.Final:compile
[INFO] |  \- io.netty:netty-transport:jar:4.1.22.Final:compile
[INFO] |     \- io.netty:netty-resolver:jar:4.1.22.Final:compile
[INFO] \- com.google.guava:guava:jar:28.0-jre:compile
[INFO]    +- com.google.guava:failureaccess:jar:1.0.1:compile
[INFO]    +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO]    +- com.google.code.findbugs:jsr305:jar:3.0.2:compile
[INFO]    +- org.checkerframework:checker-qual:jar:2.8.1:compile
[INFO]    +- com.google.errorprone:error_prone_annotations:jar:2.3.2:compile
[INFO]    +- com.google.j2objc:j2objc-annotations:jar:1.3:compile
[INFO]    \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.17:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.632s
[INFO] Finished at: Sat Jun 22 17:15:20 IST 2019
[INFO] Final Memory: 16M/220M
[INFO] ------------------------------------------------------------------------

#### Other things
What does com.google.anddroid:annotation doing in logback transitive dependency?? I excluded it and hence it is not in dependency tree.

#### Dependecies:
      <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-logging-logback</artifactId>
            <version>0.80.0-alpha</version>
            <exclusions>
                <exclusion>
                    <groupId>com.google.android</groupId>
                    <artifactId>annotations</artifactId>
                </exclusion>                                               
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.google.firebase</groupId>
            <artifactId>firebase-admin</artifactId>
            <version>6.0.0</version>
            <type>jar</type>
            <exclusions>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava-jdk5</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>28.0-jre</version>
            
        </dependency>

Thanks!

service get locked because of logging

Environment details

  1. Service deployed to GKE
  2. Java version: JDK8

Steps to reproduce

  1. Deploy service with logging export to Stackdriver (
    com.google.cloud:google-cloud-logging,
    com.google.cloud:google-cloud-logging-logback)
  2. Run service for a while
  3. Lost a connection to Stackdriver by some reason and wait for Caused by: com.google.cloud.logging.LoggingException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 49.999824470s. [remote_addr=logging.googleapis.com/172.217.6.74:443]
    4.Restore connection
  4. Continue to work with service

Actual Result:
Service is hanging on logger after several minutes (Usually, it takes up to 30 mins) after connection restoration.

Stack trace

"http-nio-8091-exec-9" googleapis/google-cloud-java#70 daemon prio=5 os_prio=31 tid=0x00007ffb52b82800 nid=0x14703 in Object.wait() [0x00007000121c9000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at com.google.api.gax.batching.BlockingSemaphore.acquire(BlockingSemaphore.java:61)
	- locked <0x00000006c085df50> (a com.google.api.gax.batching.BlockingSemaphore)
	at com.google.api.gax.batching.FlowController.reserve(FlowController.java:197)
	at com.google.api.gax.batching.BatchingFlowController.reserve(BatchingFlowController.java:58)
	at com.google.api.gax.batching.ThresholdBatcher.add(ThresholdBatcher.java:170)
	at com.google.api.gax.rpc.BatchingCallable.futureCall(BatchingCallable.java:73)
	at com.google.api.gax.rpc.UnaryCallable$1.futureCall(UnaryCallable.java:126)
	at com.google.api.gax.rpc.UnaryCallable.futureCall(UnaryCallable.java:87)
	at com.google.cloud.logging.spi.v2.GrpcLoggingRpc.write(GrpcLoggingRpc.java:232)
	at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:628)
	at com.google.cloud.logging.LoggingImpl.writeLogEntries(LoggingImpl.java:596)
	at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:557)
	at com.google.cloud.logging.logback.LoggingAppender.append(LoggingAppender.java:232)
	at com.google.cloud.logging.logback.LoggingAppender.append(LoggingAppender.java:79)
	at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
	at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
	at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
	at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
	at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
	at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
	at ch.qos.logback.classic.Logger.info(Logger.java:579)

logging.logback.LoggingAppenderTest: testEnhancersAddCorrectLabelsToLogEntries failed

This test failed!

To configure my behavior, see the Build Cop Bot documentation.

If I'm commenting on this issue too often, add the buildcop: quiet label and
I will stop commenting.


commit: e7753e6
buildURL: Build Status, Sponge
status: failed

Test output
value of: next()
expected: …quest=null, labels={levelName=WARN, loggerName=com.google.cloud.logging.logback.LoggingAppenderTest, test-label-2=test-value-2, levelValue=30000, test-label-1=test-value-1}, operation=null, t…
but was : …quest=null, labels={test-label-2=test-value-2, test-label-1=test-value-1, levelName=WARN, loggerName=com.google.cloud.logging.logback.LoggingAppenderTest, levelValue=30000, logging.googleapis.trace=abc}, operation=null, t…
	at com.google.cloud.logging.logback.LoggingAppenderTest.testEnhancersAddCorrectLabelsToLogEntries(LoggingAppenderTest.java:187)

Synthesis failed for java-logging-logback

Hello! Autosynth couldn't regenerate java-logging-logback. 💔

Here's the output from running synth.py:

Cloning into 'working_repo'...
Switched to branch 'autosynth'
Running synthtool
['/tmpfs/src/git/autosynth/env/bin/python3', '-m', 'synthtool', 'synth.py', '--']
synthtool > Executing /tmpfs/src/git/autosynth/working_repo/synth.py.
On branch autosynth
nothing to commit, working tree clean
HEAD detached at FETCH_HEAD
nothing to commit, working tree clean
synthtool > Wrote metadata to synth.metadata.
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.1/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.1/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/git/autosynth/env/lib/python3.6/site-packages/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/git/autosynth/env/lib/python3.6/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/git/autosynth/env/lib/python3.6/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/git/autosynth/env/lib/python3.6/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/git/autosynth/env/lib/python3.6/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/git/autosynth/env/lib/python3.6/site-packages/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "/tmpfs/src/git/autosynth/working_repo/synth.py", line 21, in <module>
    templates = gcp.CommonTemplates().java_library()
  File "/tmpfs/src/git/autosynth/env/lib/python3.6/site-packages/synthtool/gcp/common.py", line 75, in java_library
    return self._generic_library("java_library", **kwargs)
  File "/tmpfs/src/git/autosynth/env/lib/python3.6/site-packages/synthtool/gcp/common.py", line 43, in _generic_library
    if not kwargs["metadata"]["samples"]:
KeyError: 'samples'

Synthesis failed

Google internal developers can see the full log here.

Dependency Dashboard

This issue contains a list of Renovate updates and their statuses.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.


  • Check this box to trigger a request for Renovate to run again on this repository

WriteOption resource attribute test case work on GCE and locally

@Test
public void testDefaultWriteOptionsHasExpectedDefaults() {
logging.setFlushSeverity(Severity.ERROR);
Capture<WriteOption> logNameArg = Capture.newInstance();
Capture<WriteOption> resourceArg = Capture.newInstance();
logging.write((Iterable<LogEntry>) anyObject(), capture(logNameArg), capture(resourceArg));
expectLastCall().once();
replay(logging);
loggingAppender.start();
Timestamp timestamp = Timestamp.ofTimeSecondsAndNanos(100000, 0);
LoggingEvent loggingEvent = createLoggingEvent(Level.ERROR, timestamp.getSeconds());
loggingAppender.doAppend(loggingEvent);
assertThat(logNameArg.getValue()).isEqualTo(defaultWriteOptions[0]);
// TODO(chingor): Fix this test to work on GCE and locally
// assertThat(resourceArg.getValue()).isEqualTo(defaultWriteOptions[1]);
}

Documentation errors in README and Javadoc

The README uses an old version, but 0.117.0 is available.

The example configurations are a bit hard to read because:

  • The comments are at different locations.
  • Javadoc uses a list instead of a code block.

The Javadoc incorrectly states that there is a level tag that can be used to filter, but you have to use a filter tag (as is correctly shown in the README).

`resourceType` set to global for Cloud Run

The resourceType is set to global for Cloud Run. It makes finding logs for a particular service difficult.

Screen Shot 2020-04-03 at 2 02 31 PM

I'm expecting

Screen Shot 2020-04-03 at 3 00 36 PM

Environment details

  1. Service: Cloud Run "run.googleapis.com/client-version: 281.0.0"
  2. Java version: openjdk:11-jre-slim from Docker
  3. logging-logback version(s): 0.116.0-alpha

Steps to reproduce

We have Cloud Run setup with ktor in kotlin. Our logback.xml is as follows.

Code example

<configuration>
    <!-- Stack Driver Appender -->
    <!-- See Config here: https://cloud.google.com/logging/docs/setup/java#wzxhzdk57wzxhzdk58logback_appender_for_product_name -->
    <appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
        <flushLevel>WARN</flushLevel> <!-- Optional : default ERROR -->
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <!-- Add Console output for local dev, stacktraces for GCP Error Reporting -->
        <appender-ref ref="STDOUT"/>
        <!-- Add Cloud Appender to root output, stacktraces for GCP Logging -->
        <!-- https://cloud.google.com/logging/docs/setup/java#wzxhzdk57wzxhzdk58logback_appender_for_product_name -->
        <appender-ref ref="CLOUD" />
    </root>
</configuration>

External references such as API reference guides

com.google.cloud.logging.logback.LoggingAppender flush is too slow

I have a project running Java in an app engine which uses com.google.cloud.logging.logback.LoggingAppender to output log like as below.

https://cloud.google.com/logging/docs/setup/java

I found that the latency of log.error output is around 100ms. This means, if the app output error logs too many then app-engine would scale up.

Our app connect to some external services. When those services sometimes respond error, the app output error logs.

Does anyone know how to cope with it?

I expected that flushLevel=OFF would resolve this issue, but OFF=ALL by below method. https://github.com/googleapis/java-logging-logback/blob/0.116.0/google-cloud-contrib/google-cloud-logging-logback/src/main/java/com/google/cloud/logging/logback/LoggingAppender.java#L336-L355

Sorry for my multi post.

https://stackoverflow.com/questions/62786760/q-gae-stackdriver-java-logback-error-logging-too-slow

I contacted Google Support Case and they told me to create an issue about this case.

Logging with google-cloud-logging-logback is not grouping request logs

Environment details

  1. Logging
  2. OS type and version: Linux
  3. Java version: 11
  4. google-cloud-java version(s): 0.103.0-alpha

Steps to reproduce

Code example

class TraceLoggingEnhancer : LoggingEnhancer {
  override fun enhanceLogEntry(builder: LogEntry.Builder) {
    val req = HttpContext.get() ?: return
    val projectId = ServiceOptions.getDefaultProjectId();
    val spanId = req.headers("x-b3-spanid")
    val traceId = req.headers("x-b3-traceid")

    builder.setHttpRequest(HttpRequest.newBuilder()
            .setRequestUrl(req.url())
            .setStatus(200)
            .setUserAgent(req.userAgent())
            .setRequestMethod(HttpRequest.RequestMethod.valueOf(req.requestMethod()))
            .build())

    builder.setTrace(composeFullTraceName(projectId, traceId))
    builder.setSpanId(spanId)
  }

  private fun composeFullTraceName(projectId: String, traceId: String): String {
    return "projects/$projectId/traces/$traceId";
  }

}

Any additional information below

The log lines: line1 and line2 are not rendered as single log entry as on GAE or on Flexible Environment.

image

logback setup doesn't work correctly

i've followed the docs and the readme for the logback setup.

steps i took

my app details

i am running a ktor app on gae standard java11.

problematic output

when i run the app i get the following output:
Screen Shot 2020-10-20 at 4 04 10 PM
none of the logs show up. just the message about replayed logs...

other things i tried

i have tried using:

<configuration>
    <!-- Stack Driver Appender -->
    <!-- See Config here: https://cloud.google.com/logging/docs/setup/java#wzxhzdk57wzxhzdk58logback_appender_for_product_name -->
    <appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
        <!-- Optional : filter logs at or above a level -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <log>application.log</log> <!-- Optional : default java.log -->
        <flushLevel>WARN</flushLevel> <!-- Optional : default ERROR -->
    </appender>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="trace">
        <!-- Add Console output for local dev -->
        <appender-ref ref="STDOUT"/>
        <!-- Add Cloud Appender to root output-->
        <appender-ref ref="CLOUD" />
    </root>

</configuration>

I get the same output. If i just use the STDOUT setup i get logs that aren't organized by trace and where log levels are not correct based on the logger instances in my application.

I can't find any useful info other than a SO post from 2016.

I'm just looking to get logging grouped and at the right log level. help would be greatly appreciated!

throwProxy.getSuppressed() is skipped

Thanks for stopping by to let us know something could be better!

PLEASE READ: If you have a support contract with Google, please create an issue in the support console instead of filing on GitHub. This will ensure a timely response.

Is your feature request related to a problem? Please describe.
We are using spring reactor webflux to develop our web application. The original stacktrace produced is not user-friendly, so the reactor team has designed a java agent to enhance the logs, this is called production-ready assembly back-tracing.

https://projectreactor.io/docs/core/release/reference/#reactor-tools-debug
https://github.com/reactor/reactor-tools#reactor-debug-agent---production-ready-assembly-back-tracing

Here is the produced log in stdout.

java.lang.IndexOutOfBoundsException: Source emitted more than one item
  at reactor.core.publisher.MonoSingle$SingleSubscriber.onNext(MonoSingle.java:129)
   ...
  at java.lang.Thread.run(Thread.java:748)
  Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Assembly trace from producer [reactor.core.publisher.MonoSingle] :
  reactor.core.publisher.Flux.single(Flux.java:7380)
  foo.Bar.baz(Bar.java:22)
Error has been observed by the following operator(s):
  |_	Flux.single ⇢ foo.Bar.baz(Bar.java:22)

You can see the user-friendly message is marked Suppressed: .
However, the produced stacktrace and the log entry in the google cloud logging has only

java.lang.IndexOutOfBoundsException: Source emitted more than one item
  at reactor.core.publisher.MonoSingle$SingleSubscriber.onNext(MonoSingle.java:129)
   ...
  at java.lang.Thread.run(Thread.java:748)

I found the elements after Suppressed: are all skipped while these elements are critical for our debugging experience.

The cause is the implementation of com.google.cloud.logging.logback.LoggingAppender#writeStack does not respect the throwProxy.getSuppressed() which all the skipped log elements are stored here.

Describe the solution you'd like
Add an option to respect throwProxy.getSuppressed().

Describe alternatives you've considered
I have come up a workaround by using an enhancer.

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.IThrowableProxy;
import ch.qos.logback.classic.spi.StackTraceElementProxy;
import com.google.cloud.logging.LogEntry;
import com.google.cloud.logging.Payload;
import com.google.cloud.logging.Severity;
import com.google.cloud.logging.logback.LoggingAppender;
import com.google.cloud.logging.logback.LoggingEventEnhancer;

import java.util.HashMap;
import java.util.Map;

public class SuppressedEnhancer implements LoggingEventEnhancer
{
	@Override
	public void enhanceLogEntry(LogEntry.Builder builder, ILoggingEvent e)
	{
		StringBuilder payload = new StringBuilder().append(e.getFormattedMessage()).append('\n');
		writeStack(e.getThrowableProxy(), "", payload);

		Level level = e.getLevel();
		Severity severity = severityFor(level);

		Map<String, Object> jsonContent = new HashMap<>();
		jsonContent.put("message", payload.toString().trim());
		if (severity == Severity.ERROR)
		{
			jsonContent.put("@type", "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent");
		}

		builder.setPayload(Payload.JsonPayload.of(jsonContent));
	}

	/**
	 * @param throwProxy
	 * @param prefix
	 * @param payload
	 * @see LoggingAppender#writeStack(ch.qos.logback.classic.spi.IThrowableProxy, java.lang.String, java.lang.StringBuilder)
	 */
	@SuppressWarnings("JavadocReference")
	private static void writeStack(IThrowableProxy throwProxy, String prefix, StringBuilder payload)
	{
		if (throwProxy == null)
		{
			return;
		}
		payload
				.append(prefix)
				.append(throwProxy.getClassName())
				.append(": ")
				.append(throwProxy.getMessage())
				.append('\n');
		StackTraceElementProxy[] trace = throwProxy.getStackTraceElementProxyArray();
		if (trace == null)
		{
			trace = new StackTraceElementProxy[0];
		}

		int commonFrames = throwProxy.getCommonFrames();
		int printFrames = trace.length - commonFrames;
		for (int i = 0; i < printFrames; i++)
		{
			payload.append("    ").append(trace[i]).append('\n');
		}
		if (commonFrames != 0)
		{
			payload.append("    ... ").append(commonFrames).append(" common frames elided\n");
		}

		writeStack(throwProxy.getCause(), "caused by: ", payload);

               // Diff
               // Diff
               // Diff
               // Diff
               // Diff
               // Diff
               // Diff
               // Diff
               // Diff
		for (IThrowableProxy throwableProxy : throwProxy.getSuppressed())
		{
			writeStack(throwableProxy, "suppressed: ", payload);
		}
	}

	/**
	 * @param level
	 * @return
	 * @see LoggingAppender#severityFor(ch.qos.logback.classic.Level)
	 */
	@SuppressWarnings("JavadocReference")
	private static Severity severityFor(Level level)
	{
		switch (level.toInt())
		{
			// TRACE
			case 5000:
				return Severity.DEBUG;
			// DEBUG
			case 10000:
				return Severity.DEBUG;
			// INFO
			case 20000:
				return Severity.INFO;
			// WARNING
			case 30000:
				return Severity.WARNING;
			// ERROR
			case 40000:
				return Severity.ERROR;
			default:
				return Severity.DEFAULT;
		}
	}
}

Additional context
Any other context or screenshots about the feature request.

WriteLogEntriesRequest API is called per a log entry

Hi, I use this library in my GCP project App Engine application, and I found that the quota Log ingestion requests is easily exhausted when load testing.

When a log entry is appended, the log is wrapped as singleton list, and it is passed to google-cloud-logging library.
https://github.com/googleapis/java-logging-logback/blob/master/src/main/java/com/google/cloud/logging/logback/LoggingAppender.java#L232

Finally the singleton list seems to be converted to one WriteLogEntriesRequest.
This means one log entry causes one WriteLogEntriesRequest API call.
https://github.com/googleapis/java-logging/blob/8cbf0af1c63dd14392bd819c9a33e0141d7aad2f/google-cloud-logging/src/main/java/com/google/cloud/logging/LoggingImpl.java#L510

I think it's better to support batch send option in order to reduce request number and save Log ingestion requests quota.
Is my idea correct?

Random RuntimeException while executing runnable CallbackListener

When using logback, I am getting random messages in the logs:

SEVERE: RuntimeException while executing runnable CallbackListener{com.google.api.core.ApiFutures$1@69dd2298} with executor MoreExecutors.directExecutor()

and then also:

java.lang.RuntimeException: com.google.cloud.logging.LoggingException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 49.999792464s. [buffered_nanos=50999356505, waiting_for_connection]
	at com.google.cloud.logging.LoggingImpl$7.onFailure(LoggingImpl.java:615)
	at com.google.api.core.ApiFutures$1.onFailure(ApiFutures.java:68)
	at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1041)
	at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30)
	at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1215)
	at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983)
	at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:771)
	at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:100)
	at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30)
	at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1215)
	at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983)
	at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:771)
	at com.google.common.util.concurrent.AbstractCatchingFuture.run(AbstractCatchingFuture.java:126)
	at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30)
	at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1215)
	at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983)
	at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:771)
	at com.google.api.core.AbstractApiFuture$InternalSettableFuture.setException(AbstractApiFuture.java:95)
	at com.google.api.core.AbstractApiFuture.setException(AbstractApiFuture.java:77)
	at com.google.api.gax.rpc.BatchedFuture.setException(BatchedFuture.java:55)
	at com.google.api.gax.rpc.BatchedRequestIssuer.sendResult(BatchedRequestIssuer.java:84)
	at com.google.api.gax.rpc.BatchExecutor$1.onFailure(BatchExecutor.java:98)
	at com.google.api.core.ApiFutures$1.onFailure(ApiFutures.java:68)

Does it mean, there are some messages lost? Can this be safely ignored?

I can see these pretty regularly.

Is there a way to package credentials to write to the cloud logging as part of a swing Java desktop app?

Is there a way to use credentials or a public key to write to the cloud logging as part of a swing Java desktop app?

My use case is to instrument a Swing Java desktop with Cloud logging. To be more specific, an IntelliJ plugin. The purpose of this is to use Cloud Logging for similar purposes as to Firebase Analytics, which is used for Android, iOS, and web apps to track analytics.

I know you can use the credentialsFile to point to the JSON service account file. However, it seems to only work with full paths. So, a relative reference to resources won't work.

Also, credentialsFile worked with a private key, which private key. Is there a way to use it with a less sensitive data instead? Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.