Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在云监视中禁用Azure服务总线打印日志_Java_Azure_Aws Lambda - Fatal编程技术网

Java 在云监视中禁用Azure服务总线打印日志

Java 在云监视中禁用Azure服务总线打印日志,java,azure,aws-lambda,Java,Azure,Aws Lambda,我在aws lambda日志中收到以下错误消息: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 因此,

我在aws lambda日志中收到以下错误消息:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
因此,我添加了maven depdenecies,如下所示:

<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.21</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.21</version>
        </dependency>
我的log4j.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="com.amazonaws.services.lambda.runtime.log4j2">
    <Appenders>
        <Lambda name="Lambda">
            <PatternLayout>
                <pattern>%d{yyyy-MM-dd HH:mm:ss} %X{AWSRequestId} %-5p %c{1}:%L - %m%n</pattern>
            </PatternLayout>
        </Lambda>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Lambda" />
        </Root>
    </Loggers>
</Configuration>

%d{yyyy-MM-dd HH:MM:ss}%X{AWSRequestId}%-5p%c{1}:%L-%m%n

如何禁用打印这些日志?

首先,这不是错误。该消息表示类路径中不存在记录器实现,因此默认为NOP(无操作)日志。由于SLF4J是不同日志框架的抽象,除了只有SLF4J之外,还需要在类路径中包含特定的日志框架。由于您试图使用Lambda appender,因此需要添加到类路径中。这也将引入所需的SLF4J依赖项

截至2020年5月5日的最新版本:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-log4j2</artifactId>
    <version>1.2.0</version>
</dependency>

亚马逊网站
aws-lambda-java-log4j2
1.2.0

我认为问题与项目的日志依赖性有关

一方面,在Log4j2上有AWS Lambda,它使用Log4j2进行日志记录。另一方面,您有Azure服务总线,它使用SLF4J API facade进行日志记录。您需要配置系统以支持这两种日志记录方法

首先,在
pom.xml
文件中需要以下依赖项:


...
亚马逊网站
aws-lambda-java-log4j2
1.2.0
org.apache.logging.log4j
log4j-slf4j-impl
2.13.2
....
第一个依赖项允许您向AWS Lambda发出日志跟踪

最后一个是Log4j2 SLF4J java桥,这是Azure服务总线日志记录所必需的

请同时删除与组
org.slf4j
关联的依赖项
slf4j simple
,这将是不必要的

此依赖项就绪后,请包括以下行:


在XML配置文件中(按照惯例,最好将Log4j2配置文件命名为
Log4j2.XML
,而不是
log4j.XML
,更适合于旧的log4j库版本)

您的
log4j2.xml
应该如下所示:


%d{yyyy-MM-dd HH:MM:ss}%X{AWSRequestId}%-5p%c{1}:%L-%m%n

Hi Shyam感谢您的回复。我有log4j2部门。让我检查一下1.2.0版本。它只是增加了aws lambda的冷启动。但是当我添加slf4j库时。aws lambda的冷启动时间减少了,但是azure service bus日志也被打印到了云监视日志中。我如何修改我的log4j配置以停止打印这些信息日志。我不想更改日志级别。如果你有log4j2依赖项,那么您不应该单独添加SLF4J依赖项。log4j2将引入所需的依赖项。我更新了版本并尝试了。得到相同的错误。如前所述,我的pom中已经有aws-log4j库。谢谢。我尝试了appraoch。服务总线日志仍在打印中。然后我从项目中删除了log4j.xml。然后我注意到我的lambda日志没有打印出来,但是服务总线日志仍然很重要,尽管我没有任何log4j.xml。请让我检查一下服务总线日志是如何实际生成的。这是来自maven depdency tree[INFO]+-com.microsoft.azure:azure servicebus:jar:3.4.0:compile[INFO]|+-org.apache.qpid:proton-j:jar:0.33.4:compile[INFO]|+-com.microsoft.azure:qpid-proton-j-extensions:jar:1.2.3:compile[INFO]|+-org.slf4j:slf4j-api:jar:1.7.28:compile非常感谢。我用进一步的信息更新了我的答案。请,你能试试吗?我忘了提到:请,你也可以从
pom.xml
文件中删除与组
org.slf4j
相关的依赖项,它们不再是必需的,因为它们是作为
log4j-slf4j18-impl
工件和Azure服务总线库的可传递依赖项提供的。
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-log4j2</artifactId>
    <version>1.2.0</version>
</dependency>