在Java中使用日志记录附加程序时无法在stackdriver上查看日志

时间:2019-01-22 04:06:01

标签: java logging google-cloud-platform stackdriver

我的应用程序在dropwizard中,最近我已将其上传到gcp。对于日志记录,我们需要使用stackdriver。我不是gcp expert,只是关注https://cloud.google.com/logging/docs/setup/java。我使用日志记录追加程序的方式来显示堆栈驱动程序上的日志。

我了解使用日志记录附加程序实现stackdriver日志记录,我们需要做以下两件事:

  1. 在logback.xml中添加云附加程序
  2. 在其中添加依赖项'com.google.cloud:google-cloud-logging-logback:0.77.0-alpha' build.gradle。

每当我选择部署应用程序的实例时,我都看不到堆栈驱动程序上的日志。

1 个答案:

答案 0 :(得分:0)

对于dropwizard来说,它有点复杂,因为非常认为。这是将堆栈驱动程序日志记录与云日志记录结合使用所需的步骤。注意:我使用了0.77.0-alpha库的com.google.cloud:google-cloud-logging-logback版本。

  1. 创建一个实现AppenderFactory<ILoggingEvent>并带有JsonTypeName批注的类:
@JsonTypeName("stackdriver")
public class StackdriverLoggingAppenderFactory implements AppenderFactory<ILoggingEvent> {

    @Override
    public Appender<ILoggingEvent> build(LoggerContext context, String applicationName,
                                         LayoutFactory<ILoggingEvent> layoutFactory,
                                         LevelFilterFactory<ILoggingEvent> levelFilterFactory,
                                         AsyncAppenderFactory<ILoggingEvent> asyncAppenderFactory) {
        final LoggingAppender appender = new LoggingAppender();
        appender.setName("stackdriver");
        appender.setContext(context);
        appender.start();
        return appender;
    }
}
  1. 将注释的值添加到dropwizard配置(yaml)文件的日志记录部分:
logging:
  level: INFO
  appenders:
  - type: stackdriver
  1. 将名为io.dropwizard.logging.AppenderFactory的文件添加到src/main/resources/META-INF.services。该文件应包含在步骤1中创建的标准软件包和类名,例如
com.acme.gcp.logging.StackdriverLoggingAppenderFactory
  1. 最后,添加一个环境变量,其键为GOOGLE_CLOUD_PROJECT和运行实例的项目ID的值。

我通过在笔记本电脑上本地运行应用程序进行了测试,并且可以在Stackdriver Logging下的Google Cloud Console中看到日志条目。