标签: slf4j

ServletContext.log() 不记录日志

使用时,我的(GWT)的日志输出RemoteServiceServlet未显示在日志文件或标准输出中getServletContext().log("anything");

对于依赖项注入,我使用Google Guice。对于我自己的日志输出,我使用slf4j-jdk14。我在 Tomcat 6 和 Jetty(GWT devmode)中尝试过。

为了清楚起见,我的 Servlet:

@Singleton
public class MyServiceServlet extends RemoteServiceServlet implements MyService {

    private static final Logger log = LoggerFactory.getLogger(MyServiceServlet.class);
    private final ADependency dep;

    @Inject
    public MyServiceServlet(ADependency dep) {
        getServletContext().log("THIS IS NOT SHOWN IN MY LOGS");
        log.error("THIS IS SHOWN IN MY LOGS");
        this.dep = dep;
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,在哪里可以找到丢失的日志输出或者在哪里可以配置 ServletContext-Log?

gwt logging servlets guice slf4j

4
推荐指数
1
解决办法
2370
查看次数

如何在 Eclipse RCP 应用程序中正确设置 Logback?

我花了 2 或 3 天的时间试图让 Logback 在我的新 Eclipse RCP 项目中正常工作。(我是第一次尝试 RCP,但在其他 java 项目中使用过 logback)。

我向大家提出的问题是:“Eclipse RCP (E4) 是否有一个简单的插件来启用 Logback 日志记录?是否应该使用此处的插件 ( http://logback.qos.ch/p2/ )?如果有这不是一个简单的插件,启用此日志记录的正确方法是什么?”

我已多次阅读此页面(http://devblog.virtage.com/2012/07/logback-and-eclipse-attaching-logback-xml/),它似乎很有希望,但我一直无法获得让它工作。

eclipse eclipse-rcp logback slf4j

4
推荐指数
1
解决办法
2062
查看次数

ActiveMQ 客户端问题:ClassNotFoundException org.apache.logging.log4j.spi.AbstractLoggerAdapter

我有一个小型 ActiveMQ 客户端,它应该只是连接到 AMQ 服务、创建队列并发送消息。我收到以下错误消息:

\n\n
Failed to instantiate SLF4J LoggerFactory\nReported exception:\njava.lang.NoClassDefFoundError: org/apache/logging/log4j/spi/AbstractLoggerAdapter\n  at java.lang.ClassLoader.defineClassl(Native Method)\n  ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的上有以下罐子classpath

\n\n
log4j-1.2-api-2.6.2.jar\nlog4j-core-2.6.2.jar\nlog4j-slf4j-impl-2.6.2.jar\n\nactivemq-broker-5.13.3.jar\nactivemq-client-5.13.3.jar\nactivemq-console-5.13.3.jar\nactivemq-jaas-5.13.3.jar\nactivemq-kahadb-store-5.13.3.jar\nactivemq-openwire-legacy-5.13.3.jar\nactivemq-protobuf-1.1.jar\nactivemq-spring-5.13.3.jar\nactivemq-web-5.13.3.jar\ngeronimo-j2ee-management_1.1_spec-1.0.1.jar\ngeronimo-jms_1.1_spec-1.1.1.jar\ngeronimo-jta_1.0.1B_spec-1.0.1.jar\nhawtbuf-1.11.jar\njcl-over-slf4j-1.7.13.jar\nslf4j-api-1.7.13.jar\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我去掉前三个库,我会收到错误Failed to load class \xe2\x80\x9corg.slf4j.impl.StaticLoggerBinder\xe2\x80\x9d

\n\n

我尝试过搜索,但我不能说我找到了迄今为​​止有效的任何东西。

\n

java classpath slf4j log4j2

4
推荐指数
1
解决办法
1万
查看次数

为每条日志消息添加自定义值

假设我有一个带有端点的 REST API /user/{user_id}/foo。现在,当调用它时,我希望处理此请求的所有日志都包含有关{user_id}. {user_id}是否可以在不传递每个方法的情况下实现这一目标?

我使用 SLF4j 进行日志记录,我的应用程序基于 Spring Boot。

java slf4j spring-boot

4
推荐指数
1
解决办法
7621
查看次数

未调用自定义 AppenderBase

我正在为我的测试编写一个自定义 AppenderBase 并在 logback-test.xml 中配置它 但是 append() 函数没有被调用。

import ch.qos.logback.core.AppenderBase;
import org.apache.log4j.spi.LoggingEvent;

import java.util.ArrayList;
import java.util.List;

public class TestAppender extends AppenderBase<LoggingEvent> {
    public static List<LoggingEvent> events = new ArrayList<>();

    @Override
    protected void append(LoggingEvent e) {
        events.add(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的配置文件:logback-test.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="false">
    <contextName>logging</contextName>

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

    <root level="WARN">
        <appender-ref ref="CONSOLE" />
    </root>

    <logger name="com.egencia.library" level="INFO" />


        
    <appender name="map" class="com.egencia.service.contact.controller.TestAppender" />
        
    <root level="ERROR">
                
        <appender-ref ref="map"/>
            
    </root> …
Run Code Online (Sandbox Code Playgroud)

java junit logback slf4j

4
推荐指数
1
解决办法
2046
查看次数

logback,如何在追加之前更改日志事件中的消息

使用 logback 1.2.3 和 Java 9 ...

谷歌搜索试图找到一种内置方法来在日志消息到达附加程序之前更改日志消息。是通过编码器斜线布局的唯一方法吗?基本上寻找像 Serilog 提供的丰富内容,您可以在其中更改消息(事件),然后再将其放入接收器。

这是用例:在日志事件成为appender的方式之前,需要一个钩子来至少改变消息文本。

logging logback slf4j

4
推荐指数
1
解决办法
5826
查看次数

grpc 记录器级别

我有一个应用程序(Java),它严重依赖 grpc 在不同的微服务之间进行通信。问题在于,在云环境中,调用服务通常无法到达其目标服务。为了解决我们的问题,我们希望从 grpc 获得更好的调试信息。

目前,我们从 grpc 获得非常粗略的日志信息,并且我们希望看到套接字级别的日志信息(例如“与套接字 x 交谈......”)。我们如何更改 grpc 的记录器级别?在整个系统中,我们使用slf4j进行日志记录,并且我们的 netty-logging.properties 的日志记录级别为INFO。

什么样的水平才算是好的水平呢?(我们正在考虑TRACE)我们应该以编程方式更改每个 grpc 调用的级别还是在配置文件中更改级别?(这个文件会是什么样子?)

logging slf4j netty grpc-java

4
推荐指数
1
解决办法
1万
查看次数

Logback - 如何单独记录异常的简单名称

有没有什么方法可以只记录异常的简单名称,而无需从代码中显式检索它?

例如,通过调用

log.error(exception);
Run Code Online (Sandbox Code Playgroud)

使用 logback 模式

%d{yyyy-MM-dd}|%-5level|%m%n
Run Code Online (Sandbox Code Playgroud)

而不是仅仅记录异常堆栈跟踪

2018-01-01|ERROR|
mainPackage.foo.bar.RocketExplosionException: Houston we have a problem
  at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22)
  at mainPackage.foo.bar.TestThrower.readyToLaunch(TestThrower.java:17)
  at mainPackage.ExceptionLauncher.main(ExceptionLauncher.java:38)
Run Code Online (Sandbox Code Playgroud)

预计将记录一个包含异常简单名称的单独列

2018-01-01|ERROR|RocketExplosionException|
mainPackage.foo.bar.RocketExplosionException: Houston we have a problem
  at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22)
  at mainPackage.foo.bar.TestThrower.readyToLaunch(TestThrower.java:17)
  at mainPackage.ExceptionLauncher.main(ExceptionLauncher.java:38)
Run Code Online (Sandbox Code Playgroud)

java logging spring logback slf4j

4
推荐指数
1
解决办法
5304
查看次数

slf4j 记录器不打印完整的包名称

我有一个包含一些类的项目,使用 org.slf4j.Logger 来记录一些信息。所有其他类中的记录器都工作正常并打印完整的类名,例如INFO com.myapp.gca.servlet.LoginServlet - Entering login。但对于一个类,它不会打印完整的类名,例如INFO c.m.gca.servlet.HealthCheckServlet - GCA health check OK,其中com.myapp.被替换为c.m.

我找不到这个特定班级与其他班级的任何区别。记录器定义如下

 private static Logger log = LoggerFactory.getLogger(HealthCheckServlet.class);
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?

java logging log4j slf4j

4
推荐指数
1
解决办法
3489
查看次数

如何配置 Intellij 日志级别以调试 Maven 输出

我在 intellij 中创建了一个简单的 Maven 应用程序,并使用 slf4j 进行日志记录。

我无法在控制台中看到调试日志

我从 C:\Program Files\JetBrains\IntelliJ IDEA 2019.3\plugins\maven\lib\maven3\conf\logging\simplelogger.properties 看到

默认日志级别设置为 INFO

org.slf4j.simpleLogger.defaultLogLevel=信息

我如何在 Intellij 中配置它来调试或警告?

intellij-idea slf4j maven

4
推荐指数
1
解决办法
6989
查看次数