带有Java的Azure函数-如何获取函数中写入的日志?

问题描述 投票:3回答:1

我已经在Azure中使用Java部署了一个队列触发的Azure函数。我在logback-classic中添加了lombokpom.xml进行记录。但是日志未显示在功能的monitor > invocation details或门户中的log-streaming service上。但是我可以看到用context.getLogger()编写的日志。使用logback logger的日志写入器不可见。请让我知道如何检查函数调用中的日志。

下面是队列触发的天蓝色函数句柄

public class QueueHandlerFunction {

  @FunctionName("queuetriggertest")
  public void queueMessageHandler(@QueueTrigger(name = "msg",
      queueName = "my-test-queue", connection = "MyQStorage") final String payload,
      final ExecutionContext context) {

    //Logs with this logger is visible
    context.getLogger().info("Received Message From my-test-queue : " + payload);

    MySampleService.handleQueueMessage(payload);
  }
}

以下是带有Lombok记录器的MySampleService

@Slf4j
public class MySampleService {

  public static void handleQueueMessage(final String payload) {

    log.info("<<<<<<<<<<<< INSIDE THE SERVICE HANDLE >>>>>>>>>>>>");
    if (StringUtils.isNotBlank(payload)) {
        log.info("Received Payload : {}", payload); //This log not available
        // TODO Work with incoming payload
    } else {
      log.info("Message payload is Blank."); //This log not available
    }
  }

}

下面是logback.xml放置在maven项目的资源文件夹中。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration>
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>%d{E MMM dd yyyy hh:mm:ss a} [%thread] %-5level %logger{36}
                - %msg%n</pattern>
      </encoder>
   </appender>

   <logger name="com.isl.test" level="INFO" />
   <root level="INFO">
      <appender-ref ref="STDOUT" />
   </root>
</configuration>

而且我在pom.xml中具有以下依赖项>

<dependencies>
        <dependency>
            <groupId>com.microsoft.azure.functions</groupId>
            <artifactId>azure-functions-java-library</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.7</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
        </dependency>
    </dependencies>

EDIT

:附加了函数调用日志的门户屏幕截图...

Attached portal screenshot for the function invocation logs

EDIT 2

:添加了本地执行的屏幕截图,并在门户中部署了一个。
  • 在本地执行时登录命令提示符Command prompt when executed the function locally

  • 来自门户的功能的实时流式控制台服务,用于队列中的新消息Portal Console with live streaming

  • 来自门户的功能的调用详细信息,用于队列中的新消息Portal Invocation details

我已经在Azure中使用Java部署了一个队列触发的Azure函数。我在pom.xml中添加了logback-classic和lombok进行日志记录。但是日志未显示在功能的监视器上> ...

java azure azure-functions azure-java-sdk
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.